C语言:“除了在定义数组时用初值列表对数组整体赋值以外,无法再对数组变量进行整体赋值。”,对吗?

 我来答
White_MouseYBZ
2020-12-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6499万
展开全部

正确的——

  1. 这里说的“能”与“不能”是指用C语言的语句操作。C没有提供对数组整体赋值的语句,所以肯定是不能对数组进行整体赋值的。

  2. 严格说,“除了在定义数组时……”的说法也欠妥,因为C代码中的变量定义语句其实也不属于C,而是C的编译器语句——就是说那些定义语句并不生成机器代码,只是在编译时不一下。

  3. 有人认为memcpy之类的函数能整体对数组赋值,那就更不妥了,因为库函数也不属于C语言,比如scanf和printf函数能输入输出,但人们都认为C语言没有提供输入/输出功能(其实是指没有提供输入/输出语句);况且memcpy之类的函数也是一个元素一个元素地为数组赋值的。

  4. 所以,虽然常有人问此类问题,但题目本身觉得还是不严谨的,“定义时整体赋值”也只是个写法而已,编译器还是一个元素一个元素地赋值的,因此“整体不整体”就是个写法罢了,实质都不能做到整体。

个人理解,供参考。

云南新华电脑学校
2020-12-23 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
展开全部
您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。二维数组可以看成特殊的一维数组,每个元素又由一个一维数组组成。
例如:构建一个maxrownum*maxrownum的矩阵
long double **data1_bfE;
data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *));
for(i=0;i<maxrownum;i++)
{
data1_bfE[i]=(long double *)malloc(maxrownum*sizeof(*data1_bfE));
}
data1_bfE[i]=(long double *)malloc(maxrownum*sizeof(*data1_bfE));

动态分配maxrownum个long double的内存空间,跟long double a[5]相似,但前者是堆上分配的,后者是栈上分配的;
data1_bfE=(long double **)malloc(maxrownum*sizeof(long double *));

意思就是定义一个有maxrownum个long double类型的指针的动态数组,然后在里面存放指针,相当于容器,data1_bfE就会成为指针的指针。
注意事项:C语言在定义数组和表示数组元素时常常采用a[ ][ ]的形式,使用方便,不易出错。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式