|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求助:
一开始学数组,在地址上,数组名=数组地址=数组首地址,很好理解,记得也很清楚
// 1.c
1 #include <stdio.h>
2
3 int main(){
4 int arr[4] = {1,2,3,4};
5 printf("arr:%p,&arr:%p,&arr[0]:%p\n",arr,&arr,&arr[0]);
6 return 0;
7 }
// arr:0x7ffdf7dfc2c0,&arr:0x7ffdf7dfc2c0,&arr[0]:0x7ffdf7dfc2c0
在学指针的时候,正常使用也没有问题
2.c
1 #include <stdio.h>
2
3 int main(){
4 int a = 1;
5 int *p = &a;
6 printf("%p\n",&p);
7 printf("%p\n",p);
8 char str[] = "hello";
9 char *str2 = "world";
10 printf("%s\n",str2);
11 }
但是学完了指针再回顾数组,就对数组地址产生了疑问:上述1.c代码中的数组名arr本质上是const类型的指针(地址不可变),那么arr和&arr应该不相同的吧,为什么二者会相同呢
就像2.c中的&p与p不相同
|
|