c++关于字符数组的初始化和赋值问题

首先,chara[20]="Whatfor";这样是没错的对吧,但为什么先定义再赋值就不行了呢,比如这样:char[20];a="Whatfor";如果我不得不先定义一个... 首先,char a[20]="What for"; 这样是没错的对吧,但为什么先定义再赋值就不行了呢,比如这样:char [20]; a="What for"; 如果我不得不先定义一个字符数组然后再给它赋值或是给一个已初始化的字符数组赋值的话该怎么办呢?
希望高手解答。
展开
 我来答
White_MouseYBZ
推荐于2017-09-08 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6606万
展开全部
初始化和赋初值并不是一回事。初始化是由编译器语句完成的,形成.exe文件后那些初始化结果已经在某个地方放着,不需要再占用执行时间了;赋初值是由C/C++语句完成的,每次启动.exe文件都要执行一遍,所以要占用代码的执行时间。比如:char a[20]="What for";就是编译器语句,编译时编译器把""中的8个字符一个接一个地存放到为char型数组a分配的20个字符空间的前8个位置,并在第9个位置加放一个'\0'。C和C++都没有提供为数组整体赋值的功能,所以char a[20];a="What for";显然是错误的。要为已经声明过的字符型数组a赋初值,如果要写入的字符串组成是有规律的,则可以用循环语句一个一个地赋值,如果字符串的组成没有规律,则可以用库函数进行拷贝赋值,例如char a[20];strcpy(a,"What for");,strcpy就把What for存放在了a的前8个字节,并在第9个字节存一个'\0'作为结束符。使用库函数要包含相应的头文件,strcpy在string.h中就有。
街角哦祝福
2010-12-13 · TA获得超过534个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:360万
展开全部
只有在定义的同时这样(a[20]="What for")赋值才行,其他不行,这是C语言规定的
要先定义然后再在其他地方赋值的话,就只能一个一个元素单独赋值,不过要是想达到同样的效果(类似a[20]="What for"),对于字符串数组,可以用库函数strcpy(...)函数赋值,其他的话,你可以自己写函数给他们赋初值!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
疯狂代码
2010-12-13 · TA获得超过264个赞
知道小有建树答主
回答量:549
采纳率:0%
帮助的人:524万
展开全部
可以换个定义的方法啊
比如 char a[10] = {0}
定义一个初始值,然后赋值修改也是一样的啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guierniu
2010-12-13
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
直接输入就可以了。
scanf();gets();都行啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扯蛋扯扯更健康
2010-12-13 · 超过16用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
一个对一个赋值啊!a[0]='w';记得在最后加'/0'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式