|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
char *lines[5] = {
"COSC1283/1284",
"Programming",
"Techniques",
"is",
"great fun"
};
printf("lines 0 mem add is %d\n",&lines[0]);
printf("lines 0 add is %d\n",lines[0]);
lines[0]可以理解为是一维数组吧,如上代码,为啥输出内容不一样,下面这种是一样的
char array[] = "abcdef";
printf("array is %p\n",array);
printf("&array is %p\n",&array);
printf("&array[0] is %p\n",&array[0]);
本帖最后由 sunrise085 于 2020-9-23 13:01 编辑
你这俩不一样啊。
上面的是指针,下面的是数组啊
&line[0]是指针line[0]的地址,line[0]是指针line[0]指向的地址,二者是不一样的
看下面的程序,对比一下,指针跳过的字节数是固定的,因为指针大小是固定的,指针指向的地址跳过的字节数是不固定的,因为你的这五个字符串长度不一样
- #include<stdio.h>
- int main()
- {
- char *lines[5] = {
- "COSC1283/1284",
- "Programming",
- "Techniques",
- "is",
- "great fun"
- };
- for (int i=0;i<5;i++)
- {
- printf("lines[%d] 指针的地址 is %p\n",i,&lines[i]);
- printf("lines[%d] 指针指向的 is %p\n",i,lines[i]);
- }
- }
复制代码
而对于第二段程序,
数组的地址就是数组的首地址,也是数组首元素的地址,虽然意义不同,但是地址相同
|
|