返回信息流#include <stdio.h>
int main(void)
{
char a[5] = {'a', 'b', 'c', 'd', 'e'};
char (*p1)[5] = a;
char (*p2)[5] = &a;
printf("*(p1+1) = %c\n", *(p1+1));
printf("*(p2+1) = %c\n", *(p2+1));
return 0;
}
本来以为结果应该是都输出b,
实际运行结果如下:
*(p1+1) =
*(p2+1) =
这是为什么呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #27991同步于 2009/9/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
一段关于数组指针的代码。有兴趣的进来。
camelBUPT
2009/9/2镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
确实是这个问题,不过我代码有问题,取指针数组的中元素的值需要通过**才可以拿到。。。
【 在 wanlxp 的大作中提到: 】
: p1为指向数据的指针,数组的大小为5,p1+1或者是p2+1相当于地址上增加了5,可能a[5]在debug下被填充了0,所以输出如上
修改了一下code:
#include <stdio.h>
int main(void)
{
char a[5] = {'a', 'b', 'c', 'd', 'e'};
char (*p1)[5] = a;
char (*p2)[5] = &a;
printf("*p1 = %c\n", **p1);
printf("*p2 = %c\n", **p2);
printf("*(p1+1) = %c\n", *(*(p1+1)-1));
printf("*(p2+1) = %c\n", *(*(p2+1)-1));
return 0;
}
输出结果:
*p1 = a
*p2 = a
*(p1+1) = e
*(p2+1) = e
关楼。。。