C语言:“除了在定义数组时用初值列表对数组整体赋值以外,无法再对数组变量进行整体赋值。”,对吗?
2个回答
展开全部
正确的——
这里说的“能”与“不能”是指用C语言的语句操作。C没有提供对数组整体赋值的语句,所以肯定是不能对数组进行整体赋值的。
严格说,“除了在定义数组时……”的说法也欠妥,因为C代码中的变量定义语句其实也不属于C,而是C的编译器语句——就是说那些定义语句并不生成机器代码,只是在编译时不一下。
有人认为memcpy之类的函数能整体对数组赋值,那就更不妥了,因为库函数也不属于C语言,比如scanf和printf函数能输入输出,但人们都认为C语言没有提供输入/输出功能(其实是指没有提供输入/输出语句);况且memcpy之类的函数也是一个元素一个元素地为数组赋值的。
所以,虽然常有人问此类问题,但题目本身觉得还是不严谨的,“定义时整体赋值”也只是个写法而已,编译器还是一个元素一个元素地赋值的,因此“整体不整体”就是个写法罢了,实质都不能做到整体。
个人理解,供参考。
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[ ][ ]的形式,使用方便,不易出错。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
例如:构建一个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[ ][ ]的形式,使用方便,不易出错。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询