关于字符数组赋值的问题

demephy 2006-01-05 09:09:35
我在vc里写
void main()
{

char arr[10] = "flat";

printf("%s",arr);
}
能通过编译并且运行,
但是如果改成
void main()
{

char arr[10] ;
char arr[] ="flat";
printf("%s",arr);
}
就会出错error C2059: syntax error : ']'
不明白其中原由,初始化改成赋值就不行了吗?
...全文
2089 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoliang668 2006-01-10
  • 打赏
  • 举报
回复
char arr[]="flat"是正确的,但是你重复定义了arr 在编译的时候所以出错
houwhf 2006-01-10
  • 打赏
  • 举报
回复
。。。
////
TryBoYang(穷人)
可以呀.
char arr[]="flat"是正确的.
编一下就知道了.不过以后arry[]数组的长度为5;
/////

char arr[]="flat"
这是定义` 定义一个数组并在定义的时候初始赋值

char arr[10]; //这也是定义一个数组,但是不赋值
// arr[]="flat" //这是想对已经定义的数组赋值,但是是错误的用法
strcpy(arr,"flat"); //这样赋值才行的
arr[0]='f';arr[1]='l';arr[2]='a';arr[3]='t';arr[4]='\0';//不觉得累这样也成

arr[]只可能出现在数组定义的时候并且要对定义的数组赋值,这时会根据你的赋值自动判断数组的大小
TryBoYang 2006-01-09
  • 打赏
  • 举报
回复
可以呀.
char arr[]="flat"是正确的.
编一下就知道了.不过以后arry[]数组的长度为5;
whyglinux 2006-01-09
  • 打赏
  • 举报
回复
字符数组是数组类型,而对于数组类型的对象在程序中是不能直接被拷贝的,因为在程序运行的时候数组的长度是未知的。但是,在编译期间数组的长度是已知的,所以可以用常量字符串对字符数组进行初始化。
zw24127 2006-01-09
  • 打赏
  • 举报
回复
arr[] ="flat";不可以这样写的,你见过没有下标又带有[]的吗?
对数组操作最好用各种函数:strcpy,strlen什么的!!!!!!
iwantfat 2006-01-09
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{

char arr[10] ; //
char arrr[] ="flat";/* arr[] 与上面的arr[10]重复定义了,改一下名字就好。*/
printf("%s",arrr);
getchar();
}
--------------------------
char arrr[] 其实与char * arrr 是等价的
fytzzh 2006-01-09
  • 打赏
  • 举报
回复
字符数组要用strcpy函数赋值.
chengzanmiao 2006-01-06
  • 打赏
  • 举报
回复
第一个是数组的初始化,第二个是数组的赋值.没有哪个字符串或责数组是这样赋值的.
加[]说明是数组名,声明的时候[N]里面的数字就是数组的总的元素个数为N个,以后想要数组里面的哪个元素直接从0到N-1里面选择就行了.当数组名后不带[]时已经蜕化成指针了`!~
demephy 2006-01-05
  • 打赏
  • 举报
回复
另外问一下什么时候数组名后面需要加上[]空括号?什么时候不需要加这个空括号?这个我一用的时候就不明白怎么写?
demephy 2006-01-05
  • 打赏
  • 举报
回复
不好意思第二个程序写错了
多写了个char
应该是
void main()
{

char arr[10] ;
arr[] ="flat";
printf("%s",arr);
}
xgbing 2006-01-05
  • 打赏
  • 举报
回复
你重定义arr了

怎样定义是编译器的规范,如果你写编译器,就可以用你想定义的方法了
demephy 2006-01-05
  • 打赏
  • 举报
回复
我的意思是第一个程序
void main()
{

char arr[10] = "flat";

printf("%s",arr);
}
不也是用了arr[10] = "flat";吗?
只不过它是在初始化时用的赋值等号,有什么不同吗?
按照你们说的,那一般的数组都不能用=赋值吗?
sms88 2006-01-05
  • 打赏
  • 举报
回复
char arr[10] ;
char arr[] ="flat";
你想重复定义啊
demephy 2006-01-05
  • 打赏
  • 举报
回复
那为什么初始化里那样写怎么可以?
sankt 2006-01-05
  • 打赏
  • 举报
回复
char arr[10] ;
strcpy(arr,"flat"); //这样赋值才行的
printf("%s",arr);
ma100 2006-01-05
  • 打赏
  • 举报
回复
你什么时候听说字符数组可以这样复制了

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧