复习C语言第十六天

木香藤子 2017-08-12

第十六天 1.当形参为指针变量时,其对应的实参可以是指针变量或存储单元的地址。 #include<stdio.h> swap(int *p1,int *p2) { int t; t=p1;*p1=*p2;*p2=t } exchange(int *q1, int *q2, int q3) { if(*q1>*q2) swap(q1, q2); if(*q1>*q3) swap(q1, q3); if(*q2>*q3) swap(q2, q3); } void main() { int d1,d2,d3,*k1,*k2,*k3; printf("请输入三个数据:"); scanf("%d,%d,%d",&d1,&d2,&d3); k1=&d1; k2=&d2; k3=&d3; exchange(k1,k2,k3); printf("输出结果为:"); printf("%d,%d,%d\n",d1,d2,d3); } 2.数组指针:int a[6]; int *p; p=&a[0];等价于 p=a; 可以对指针赋值,但不可以对数组名赋值。 C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。 3.①p+i和a+i就是a[i]的地址,或者说它们指向a数组的第i个元素;②*(p+i)或*(a+i)就是p+i或a+i所指向的数组元素,即a[i];③指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价。 p+i指向数组的下一个元素,而实际地址实际上是p+i*d,d是一个数组元素在内存空间所占的字节数。如设数组a的首地址是2000,则p+3的地址为2000+3*4=2012。 4.指针变量可以实现本身值的改变,如p++是合法的,而a++是错误的,因为数组名是常量。 #include<stdio.h> void main() {int *p,i,a[8]; p=a; for(i=0;i<8;i++) *p++=i; p=a; for(i=0;i<8;i++) printf("a[%d]=%d\n",i,*p++); } *p++结合性自右向左,等价于*(p++)

查看更多主题的豆瓣日记和相册

木香藤子
作者木香藤子
47日记 0相册

全部回应 0 条

添加回应

木香藤子的热门日记

值得一读

    豆瓣
    我们的精神角落
    免费下载 iOS / Android 版客户端
    App 内打开