char s1[4]="12",*ptr=s1;,ptr指向数组s1的 ,而*(ptr+1)的值是?
char s1[4]="12";
上式等价于 char s1[4]={'1','2','\0','\0'};
*ptr=s1;
ptr指向s1的首地址,即&s1[0],也可表示为&ptr[0]
*(ptr+1) 即为*(&ptr[1]),为*(&s1[1]), 值为2
由于数组名代表的就是数组的首元素的地址,作为char型指针的ptr被初始化为s1,所以ptr就指向了数组s1的首元素1,ptr的值就是& s1[0],即数组s1首元素s1[0]的地址。那么ptr+1就指向了数组s1的下一个元素,也就是第二个元素2,ptr+1的值就是&s1 [1],即数组s1的第二个元素的地址,*(ptr+1)对这个地址反引用,就取出这个地址里面的值,就是2
楼主要多看看你们的课本上关于指针的操作,取地址,反引用,数组名这些部分。
char s1[4]="12";
上式等价于 char s1[4]={'1','2','\0','\0'};
*ptr=s1;
ptr指向s1的首地址,即&s1[0],也可表示为&ptr[0]
*(ptr+1) 即为*(&ptr[1]),为*(&s1[1]), 值为2
由于数组名代表的就是数组的首元素的地址,作为char型指针的ptr被初始化为s1,所以ptr就指向了数组s1的首元素1,ptr的值就是& s1[0],即数组s1首元素s1[0]的地址。那么ptr+1就指向了数组s1的下一个元素,也就是第二个元素2,ptr+1的值就是&s1 [1],即数组s1的第二个元素的地址,*(ptr+1)对这个地址反引用,就取出这个地址里面的值,就是2
楼主要多看看你们的课本上关于指针的操作,取地址,反引用,数组名这些部分。
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/935/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
评论列表