数组名即数组首地址,指针变量+1即指向下一个地址
-
对于数组
a
的遍历:- 第一次循环:
p
指向a[0]
,所以p+0
的地址是a[0]
的地址,*(p+0)
的值是a[0]
的值,即1。 - 第二次循环:
p
指向a[1]
,所以p+1
的地址是a[1]
的地址,*(p+1)
的值是a[1]
的值,即2。 - 以此类推,直到第五次循环。
- 因此,你会看到数组
a
中每个元素的地址和值都被打印出来。
- 第一次循环:
-
调用
change
函数后:change
函数修改了c
指向的内容(即c[0]
)为'H',并修改了c
指向的下一个字符(即c[1]
)为'E'。因此,字符串c
从"hello"变为"HEllo"。
-
最后,打印修改后的字符串
c
,输出为:"after change c=HEllo"。
代码展示:
#include <stdio.h>
#define N 5
void change(char *d){
*d='H';
*(d+1)='E';
}
int main(){
char c[10]="hello";
int a[N]={1,2,3,4,5};
int* p;
p=a;
for (int j = 0; j < N; ++j) {
printf("p address is:%p\n",p+j);
printf("*p is:%d\n",*(p+j));
}
change(c);
printf("after change c=%s\n",c);
}