免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6460 | 回复: 9
打印 上一主题 下一主题

指针数组初始化问题~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-23 22:02 |只看该作者 |倒序浏览
在复习指针数组,这个小程序编译报错:wyy1.c(5) : error C2099: initializer is not a constant
#include <stdio.h>
void main()
{
int a[4]={1,2,3,4};
static int *p[]={a,a+1,a+2,a+3};
    printf("a=%d,b=%d,c=%d,d=%d\n",*p[0],*p[1],*p[2],*p[3]);
}

请问这是怎么回事呢?

如果按书上程序就没错,书上程序是:
#include <stdio.h>
void main()
{
static char *str[]={"sefd","dweoifkd","wefdse","fewedsdf"};
char **ps[]={str,str+1,str+2,str+3};
printf("%s\n",**ps);
}

望各位指点一下~~
signallock 该用户已被删除
2 [报告]
发表于 2009-07-23 22:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2009-07-23 23:08 |只看该作者
你好,我试了,你的方法是可以的,我又分别在这两个数组上加上static实验了一下,只有第一数组定义为普通数组,第二个定义为static的话,就会报这样的错,两个数组都是static或者前一个事,后一个不是,也没问题,请问这是什么原因呢?高手可以解释一下吗?
signallock 该用户已被删除
4 [报告]
发表于 2009-07-24 11:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2009-07-24 12:01 |只看该作者

回复 #4 signallock 的帖子

c语言里貌似没有const一说

有的,而且很重要
signallock 该用户已被删除
6 [报告]
发表于 2009-07-24 12:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2009-07-24 12:42 |只看该作者
感谢你的分析,我大概懂了,但是还有个小小的问题,我如果两个数组都不用static定义的话,这个时候编译也不会出错,这又是为什么呢?是不是因为这时候两个数组都属于局部变量,他们的值都保存在栈里,他们的值是在程序运行的时候才初始化的?
signallock 该用户已被删除
8 [报告]
发表于 2009-07-24 15:00 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2009-08-03 20:44 |只看该作者

回复 #5 aaaaa5aa 的帖子

能不能解释一下const的作用啊?谢谢了。我很少用它,但是有一次在网上看到说它就是很重要。以后编程要常用了。

[ 本帖最后由 lanlovehua 于 2009-8-4 10:12 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-08-08 15:26 |只看该作者
学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP