指针变量用于存放变量的地址,且指针变量需指向指定变量才能使用即指针需先赋值后使用(指针与所指变量类型必须一致),但不能直接给指针一个数值。
指针声名符是*,如 :int *p,此时p才是指针变量,并不是*p。
使用指针的优势:
有利于引用并计算更大的数据;
让不同的程序通过指针访问变量地址共享数据;
可向函数传输参数。
对指针变量做加减并非使指针的值加减,而是加减该指针所指变量数据类型的长度。
*p在不同的地方表达的意义不同,可能表示定义p为指针变量,也可能表示指针p指向的变量。
#includevoid sum_diff(double op1,double op2,double *psum,double *pdiff); int main() { double op1,op2,sum,diff; printf("Enter op1 op2:"); scanf("%lf %lf",&op1,&op2); sum_diff(op1,op2,&sum,&diff); printf("Sum is %.2fn diff is %.2fn",sum,diff); return 0; } void sum_diff(double op1,double op2,double *psum,double *pdiff){ *psum=op1+op2; *pdiff=op1-op2;}
#includeint main() { int i,n,a[10],*p; long sum=0; printf("Enter n:"); scanf("%d",&n); printf("Enter %d integers:",n); for(i=0;i #include#define MAXN 10 void bubble(int a[],int n); void swap(int *px,int *py); int main(void) { int i,n,a[MAXN],*px,*py; printf("Enter n:"); scanf("%d",&n); printf("Enter %d integers:",n); for(i=0;i a[j+1]){ swap(&a[j],&a[j+1]); } } } } void swap(int *px,int *py){ int t,j,a[MAXN]; t=*px; *px=*py; *py=t; px=&a[j]; py=&a[j+1]; } #includeint main() { double a[6],*p,*q; p=&a[0]; q=p+2; printf("%dn",q-p); printf("%dn",(int)q-(int)p); return 0; } #include#define LINE 10 int main(void) { int i,number; char str[LINE]; i=0; printf("Enter string:"); while((str[i]=getchar())!='n'){ i++; } str[i]=' '; number=0; for(i=0;str[i]!=0;i++){ if(str[i]>='0'&&str[i]<='9'){ number=number*10+str[i]-'0'; } } printf("digit=%dn",number); return 0; } 在使用字符串数组时要注意让数组结尾为0!!!,否则会出错。
自定义函数后记得调用在主函数中,附加自定义函数解释。
备注:有时对于用 *p 还是 p 有些疑惑,需要多次尝试。 下周需要复习一下字符串,还有之前的循环语句。



