问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言里为什么不能用赋值语句对字符数组进行整体赋值66

发布网友 发布时间:2023-12-13 14:25

我来回答

3个回答

热心网友 时间:2024-10-03 19:19

首先C语言里面的数组,一旦定义好了,是无法改变类型和长度的,也不是指针,不能改变指向的内容,所以如下这种写法

int a[10], b[10];
a = b;

是无法编译的。

在其他语言里,比如java,c#,javascript,python等等等等,数组都是作为对象来使用的

可以写a=b,那么a原来表示的数组就被抛弃了,a和b表示的就变成同一个数组了。

而C语言里,数组只是一块具有类型和长度的内存,没有提供如此复杂的功能

从逻辑上讲,可以将数组的赋值的含义变成向数组的元素赋值。但这样就会使得以简单为原则的C语言变得异常复杂:

如果a的长度比b的长度大,那么只更新b的长度,剩下的保持原样;如果b的长度比a的长度大,那么就只更新a的长度。这个还好说,但数组的长度信息只有在它没有转化成指针的时候才存在,当数组作为函数参数,或者赋值给指针的时候,长度的信息就丢失了,就退化成一个指针类型了。这就牵扯到了指针的赋值,而指针的赋值是有原来的语义的。所以事情会变得很复杂。

总而言之就是C作为一种接近底层的语言,它的数组和指针以及内存的使用有数不清的关系,所以不支持这种高级的语法。

热心网友 时间:2024-10-03 19:19

字符数组用char 不用int
a[10] 表示 数组元素不表示数组整体, 数组实际 是a[0]到a[9]同10个元素,不存在a[10]

int a[10]={"abcdefg"};定义数组顺便完成整个数组的 初始化 √(这是初始化 不是“整体”操作赋值...)

分两步
int a[10]; 先定义数组 √
a[10]={"abcdefg"}; 然后使用数组 × ,不能“整体操作”数组,记住 不要在C中试图“整体操作”给整个数组赋值

热心网友 时间:2024-10-03 19:19

初始化和赋值不一样啊…… 原理……就是规定的啊。
C语言里为什么不能用赋值语句对字符数组进行整体赋值

总而言之就是C作为一种接近底层的语言,它的数组和指针以及内存的使用有数不清的关系,所以不支持这种高级的语法。

C语言不允许用 赋值运算符 对数组整体进行赋值。这句话怎么理解呀,是一...

正确。数组是多个元素的集合,而数组名是记录数组首地址的指针常量,赋值时C语言编译器会认为是要修改数组名记录地址值,这是不允许的。

不可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值?

而char s[6]; s=”abcd”; 的写法,编译器虽然可能可以通过,但是如此这般便把s指到了常量区,是不行的。一般认为数组名是一个“常量地址”,不能够变化的,严格的编译器不会通过这个赋值。

C语言中将字符串赋值给字符数组的问题

s=ss;错误原因是:不能用赋值语句将一个字符数组直接给一个字符数组赋值,即字符串的复制(c语言中,但是在c++的string 类,上面的赋值是正确的)必须用strcpy()函数实现。而char a[ ]=”toyou“;正确的原因是:因为在声明数组变量的时候就是,为其开辟空间,并为其初始化,这样才是符合c语言语法...

可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 这句话为什么...

l','l','o','\0'},在其他任何时候,它都表示一个字符串常量。而数组名也是一个指针常量,不能对常量赋值。所以 char a[] = "hello"; //正确,hello",并非一个字符串常量,而是相当于一个初始化列表 而 char a[6];a = "hello"; //错误,a为指针常量,不能修改,当然也不能赋值 ...

二级c语言问题 字符数组可以在定义时对其整体赋初值,但在赋值语句中不...

定义赋初值是指 这样:int a【5】={1,2,3,4,5}; 而赋值语句赋初值是这样: int a 【5】;a【0】=1;a【1】=2,。。。a【4】=5;而不能是这样 a={1,2,3,4,5};就是说如果不是在定义的时候赋值,单独赋值就要对每个成员依次赋值而不能整体赋值 ...

...对字符型数组进行整体赋值。”这句话为什么是对的?

char s[5]="asdf";这句不是赋值而是初始化;讲的赋值语句是在程序执行中的赋值,就像 int a;int b;b=a; 这是赋值;对于字符而言,要赋值就要采用strcpy(s1,s2)这个函数。

赋值语句难道不可以通过运算符“=”对字符数组整体赋值吗 定义的时候...

C语言显然不能,C++可以,你可以用memcpy之类的函数类给数组整体赋值。

c语言数组的赋值

表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。2) 只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:int a[10]=1;多维数组也是一样 给数组赋值的方法除了用初始化赋值外,用赋值语句对数组...

...为什么不能用字符串常量对字符数组名进行整体赋值?

语法规定的,字符串常量对编译器来说只是个地址而已,字符串常量存储在代码段,不可被修改,你可以把字符串给一个字符串指针赋值,但是编译器是不会帮你帮字符串的数据放到数组的空间内,这些要自己完成,或者调用memcpy内存拷贝将整块的字符串复制过去 ...

c语言字符数组赋值 c语言数组全部赋值为0 字符数组赋值 给字符数组赋值的方法 字符数组和字符串的区别 c语言字符串数组 字符数组 如何给数组赋值 数组赋值
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音仅一人可见的作者知道吗? 白歆惠最新消息 白歆惠主要作品 白钦惠基本资料 风电运维公司有哪些 白歆惠出席节目 白歆惠主持经历 白歆惠人物轶事 ...唱的lalalali,lulalulali(啦啦啦啦哩,噜啦噜啦哩) ...今年6岁,想给孩子起个小名,望各位高手指点!!! C语言中将字符串赋值给字符数组2 一道二元函数极限题 一个小组交一份作业是不是只要交一个作业不用小组里的每个人都要交? ...到盗墓笔记,成为张起灵,或者张家人,有麒麟血脉的小说,无后宫最好... 一年只能改一次怎么改第二次? 雪佛兰科鲁泽儿童锁在哪?1 雪佛兰克鲁泽收音机怎么关5 求一款汉化版的电影特效制作软件17 被封了,怎么解封呀? 修改病句. 一进幼儿园,我就看见一张张可爱的小脸和一阵阵动听的歌声... 现实《受益人》,江苏一男子谋杀新婚妻子以获巨额保险,后来怎样?_百度知... 保护动物作文怎么写 photoshop打开图片为什么有带状黄色条纹 ...胃火、肺火各有什么症状?还有虚火、实火怎样分辨? 空间显示主人设置了访问权限制是不是把你qq删除了 我开了一家店,想在美团上做外卖请问怎么做。30 化学最基本从哪里学起? 偷偷去领证会暴露吗? 华为mate8和荣耀7X哪个好1 想做生意不知道做什么生意,如果开店现在开什么店挣钱 请了年假,想去新加坡玩几天,有什么优质团推荐吗? 我的被盗了,好友被拉黑申诉不成功怎么办啊? 把整数改写成小数时,首先,在整数的什麽点上小数点,然後根据要...22 把整数改写成小数时,首先,在整数的什麽点上小数点,然後根据要...6 雪佛兰科鲁泽怎么样?58 雪佛兰科鲁泽RS屏幕与手机怎么联接1 研究基因治疗的学科是什么 《〈杞人忧天〉》后续作文300字1092 修改病句。一进幼儿园,我就看见了一张张可爱的小脸和一阵阵动听的歌声... PS2任天堂游戏全集18 sfc的游戏全集目录4 根据对方为什么加不上好友?19 滚珠丝杠螺帽支架起到什么作用? 被盗了,还把所有好友都拉黑了怎么办,申诉不了? 一份完整的求职信一般应该包括哪些内容7 ...但已做凭证入成本也就是钱已付未收到发票,下个月1月月初收到卖_百度... 求哪个电影特效制作软件好?1 ...不利于身体健康?医生提醒:无论男女,这3种茶劝你少喝点- 以正常基因替换治病基因属于基因治疗了的一种方法 对么?2 电脑上怎么申请?