关于指针和指针数组和数组的问题。
关于指针和指针数组和数组的问题。例:
int ch1 = {10, 20, 30, 40, 50};
int ch2 = {100, 200, 300, 400, 500};
int ch3 = {1000, 2000, 3000, 4000, 5000};
int *ch = {ch1, ch2, ch3};
printf("ch1 = %p\n", ch1);
printf("ch = %p\n", ch);
printf("ch = %p\n", ch);
printf("ch = %p\n", ch);
printf("ch1+1 = %p\n", ch1+1);
printf("ch+1 = %p\n", ch+1);
printf("ch+1 = %p\n", ch+1);
printf("ch+1 = %p\n", ch+1);
printf("*ch1 = %d\n", *ch1);
printf("*(ch) = %d\n", *(ch));
printf("*(ch) = %d\n", *(ch));
printf("*(ch) = %d\n", *(ch));
printf("*(ch1+1) = %d\n", *(ch1+1));
printf("*(ch+1) = %d\n", *(ch+1));
printf("*(ch+1) = %d\n", *(ch+1));
printf("*(ch+1) = %d\n", *(ch+1));
putchar('\n');
printf("ch = %p\n", ch);
printf("*ch = %p\n", *ch);
printf("ch+1 = %p\n", ch+1);
printf("*ch+1 = %p\n", *ch+1);
putchar('\n');
printf("**ch = %d\n", **ch);
printf("**(ch+1) = %d\n", **(ch+1));
printf("*(*ch+1) = %d\n", *(*ch+1));
putchar('\n');
执行结果为:
ch1 = 0xbfc5eeb8
ch = 0xbfc5eeb8
ch = 0xbfc5eea4
ch = 0xbfc5ee90
ch1+1 = 0xbfc5eebc
ch+1 = 0xbfc5eebc
ch+1 = 0xbfc5eea8
ch+1 = 0xbfc5ee94
*ch1 = 10
*(ch) = 10
*(ch) = 100
*(ch) = 1000
*(ch1+1) = 20
*(ch+1) = 20
*(ch+1) = 200
*(ch+1) = 2000
ch = 0xbfc5de90
*ch = 0xbfc5eeb8
ch+1 = 0xbfc5de94
*ch+1 = 0xbfc5eebc
**ch = 10
**(ch+1) = 100
*(*ch+1) = 20
求问**(ch+1) 为什么等于100,应该等于2000?还是等于其他???????{:10_243:} 很简单啊,ch是个数组,ch可作为指针指向数组内首元素ch1,ch+1则指向数组内第二个元素ch2,一层解引用得到元素ch2,ch2这里又作为指针处理,也就是数组ch2的首元素地址,第二次解引用就得到数组ch2的这个首元素 倒戈卸甲 发表于 2021-2-4 09:58
很简单啊,ch是个数组,ch可作为指针指向数组内首元素ch1,ch+1则指向数组内第二个元素ch2,一层解引用得到 ...
兄弟,你看执行结果的地址,这不是数组指针,这是指针数组 本帖最后由 倒戈卸甲 于 2021-2-4 12:41 编辑
You-Name 发表于 2021-2-4 10:07
兄弟,你看执行结果的地址,这不是数组指针,这是指针数组
???这就是我此刻的心情,你在讲什么?还是说你看不懂我敲的字?我上面写的不就是ch是个数组。然后你跑来跟我说这不是数组指针,这是指针数组???我没眼花吧?是你没睡醒还是我没睡醒? 而且你不是打印了地址吗?你按我说的去看,ch本身指向数组首元素,ch一层解引用是不是得到ch1?你打印ch1和打印*ch是不是一个结果? ch是一个指针数组
//以下不是代码,等号仅表示两者相同,并非赋值或逻辑比较
ch = (ch地址)
ch+1 = (ch的地址)
*(ch+1) = ch = ch2 //指针数组中依次存放的是ch1,ch2,ch3三个指针,即每个数组的首元素地址
**(ch+1) = *ch = *ch2 = ch2 //ch2的值是100
ch指针数组 存放的是指针
**(ch+1)== * ( * ( ch+1)+0)
ch+1就指向ch2 也就是 &ch2
*(ch+1)-->ch2==&ch2
**(ch+1)== &ch2
所以=100
页:
[1]