1.intn=10;chara=hello,*p=a为什么错了?

[复制链接]
查看11 | 回复2 | 2013-1-25 12:33:53 | 显示全部楼层 |阅读模式
char a[n]=“hello”;是不可以的你可以 char *a = (char *)malloc(sizeof(char) * n);strcpy(a,hello);char *p = a;追问数组是可以初始化的 回答char a[10]=“hello”是没问题的但是char a[n]=“hello”就有问题了简单的和你解释下吧char a[n]=“hello”这个语句,对编译器来说在编译的时候并不知道n是多少,就是无法确定给数组a分配多少空间。或许你会说n = 10;这个10 是在运行的时候才赋值给n的,这错误在编译的时候就错误了有种东西叫动态分配 追问你说的我懂了,但是书上写着数组下标可以使整型变量,这个怎么理解? 回答定义的时候不可以在操作的时候是可以的char a[10]=“hello”;定义完了之后n = 3;然后可以用a[n] = c;这样的语句 赞同1|评论
回复

使用道具 举报

千问 | 2013-1-25 12:33:53 | 显示全部楼层
int n=10; char a[n]= {h,e,l,l,o} ; p *= a如果我理解正确的话 那么上面标准赋值应该是我写的代码char 数组的赋值方式需要单个字符复制并以,间隔一般用String str= hello;来赋值,并且使用str.chatAt(Index) 来获取其中的数组元素看错了 原来是C 啊 我进错了还以为是JAVA赞同0|评论
回复

使用道具 举报

千问 | 2013-1-25 12:33:53 | 显示全部楼层
char a[10]= hello,*p = a;追问我写的那种为什么错了啊? 回答1、n 在编译时不知到是多少,C 分配空间要知道大小2、字符串要双引号 赞同0|评论
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行