C语言指针数组怎么错了

来源:百度知道 编辑:UC知道 时间:2024/05/15 11:41:46
我看的是谭浩强第3版的C程序设计

在指针数组这地方
int a[3]={1,2,3};
int *p{&a[1],&a[2],&a[3]};
其他我就不写了,这地方怎么错误呢?
非法的初始化,谁能告诉我哪错了,谢谢大家!!
你好,3楼!
真对不起,我写错了..
int a[3]={1,2,3};
int *p{&a0],&a[1],&a[2]};
就算我那样写,编译也不会错误的..
编译系统不对下标做检查,我是说TC2.0显示的是非法初始化,请告诉我什么意思!

您好,你的第二个语句:int *p{&a[1],&a[2],&a[3]};
其中,&是取地址符号.第一个语句int a[3]={1,2,3};指的是:a[0]=1,a[1]=2,a[2]=3;
而语句 int *p{&a[1],&a[2],&a[3]}; 中&a[1]指的是a[1]的地址值,即2,&a[2]=a[2]=3.由于C语言的数组下标是从0开始的,所以&a[3]的初始化错误,应改为&a[0]即对应于a[0]的值.错误原因是下标超界
请记住,&a[0]是代表的元素的地址值.
正确的定义方式为:int *p={&a[0], &a[1], &a[2]};
您好,再一次解析您的问题!
编译系统不对下标做检查,我是说TC2.0显示的是非法初始化,请告诉我什么意思!
您的数组定义错误,正确的指针定义形式为:int *p={&a[0], &a[1], &a[2]};
而不是您这样的:int *p{&a0],&a[1],&a[2]};
掉了一个等于号,哈哈,不相信你去看下书哟!
下次要仔细一点哈,还是祝你学习进步!

int *pa[] = {&a[0], &a[1], &a[2]};

没错吧,书上就这么写的
可能只能对字符串使用吧...