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

c语言结构体数组赋值

发布网友 发布时间:2023-05-18 09:01

我来回答

5个回答

热心网友 时间:2023-09-28 22:06

(1)用字符常量逐个初始化数组。例如:

char a[8]={'i','l','o','v','e','y','o','u'};

把8个字符依次分别赋给c[0]~c[7]这8个元素。

如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。

如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。

如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

这时c数组的长度自动定为9。也可以定义和初始化一个二维字符数组,例如:

char diamond[5][5]={{'','','#'},{'','#','','#'},{'#','','','','#'},

{'','#','','#'},{'','','#'}};用它代表一个菱形的平面图形。

(2)字符串常量初始化数组。例如:

char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

可写为:char c[]={"C program"};

或去掉{}写为:char c[]="C program";

注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。

char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m','\0'};

扩展资料:

其定义的一般形式是:char数组名[数据长度]

例如:

char c[10];

c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';

以上定义了c为字符数组,包含10个元素。

由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:

int c[10];

但这时每个数组元素占2个字节的内存单元,浪费存储空间。

字符数组也可以是二维或*数组,例如:

char c[5][10];

即为二维字符数组。

初始化

字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。

输入输出

字符数组的输入

(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:

for(i=0;i<10;i++)

a<i>=getchar();

用scanf()赋值:

for(i=0;i<10;i++)

scanf("%c",&a<i>);

(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:

scanf("%s",a);

scanf("%s“,&a[0]);

输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。

字符数组的输出

(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:

for(i=0;i<10;i++)

a<i>=putchar();

用printf()赋值:

for(i=0;i<10;i++)

printf("%c",a<i>);

输出结果为:

c program

(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];

printf("%s",a);

输出结果为:

c program

参考资料:

百度百科——字符数组

热心网友 时间:2023-09-28 22:06

相同类型的结构体是可以直接赋值的,这是ANSI/ISO
C规定的。ANSI/ISO
C规定的合法行为,编译器是必须支持的。
但不能进行比较,例如
if
(stu[1]
==
stu[2])是不允许的。
这种问题不能靠试验获得准确的答案,因为你用的编译器支持并不表明其他编译器也支持。

热心网友 时间:2023-09-28 22:07

答案是肯定的,你可以写一个程序验证一下嘛,给你一个
#include<stdio.h>
struct
student
{
int
a;
int
b;
int
c;
}
stu[3]={{1,1,1},{2,2,2},{3,3,3}};
main()
{
int
i;
for(i=1;i<3;i++)
printf("%5d%5d%5d\n",stu[i].a,stu[i].b,stu[i].c);
stu[1]=stu[2];
for(i=1;i<3;i++)
printf("%5d%5d%5d\n",stu[i].a,stu[i].b,stu[i].c);
}

热心网友 时间:2023-09-28 22:08

如果你写过=的重载函数就可以.
不然就只好一个个成员赋值,
要么用memcpy(stu[1],
stu[2],
sizeof(stu[1]))也可以

热心网友 时间:2023-09-28 22:08

不用理哪些只知道c++的人的话,不用管c++的什么重载函数,
在标准c语言中,对于大字节类型编译器默认可以直接赋值。
你这样赋值是没有问题的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 西装外套有哪些搭法时髦又显瘦? 西装外套怎么搭 未成年人观护帮教基地成立的初衷、作用及意义 (C语言)当从键盘输入 18 时,下面程序的运行结果( ) c语言,为啥等于十八? 广州旧白云国际机场介绍? 我很喜欢的女生和我说好今天来我这的,突然音讯全无,电话不接短信不回,前天都还好好的。她应该是不要我 如果你的女朋友玩失踪好几天,音信全无。她回来后你会怎么办?注:她散心去了,一个人。 教育是服务吗? c语言中 %-18s 什么意思 音讯全无什么意思啊? 广州铁路局大修段,大机段上班方式如何的,薪资待遇怎么样,有没有机会转出大修段? 怎么才能让卖家钱货两失 女朋友突然有一天音信全无,我该怎么办? 现女友说这句话是什么意思待你音讯全无,我在去热爱这世界万物什么意思? 我是菜鸟,,知道龙之谷能用点卷买服装,又听说下副本可以打装备,这里的装备和服装相同吗?都是怎样的? 刷卡联后面写贷什么意思? 梦见赶集卖菜看见很多卖大白菜的预兆 大机是什么意思啊 人财两失是什么意思 C语言中定义与说明有什么不一样啊? C语言:结构的赋值方式 郊区基站高覆盖范围广什么意思? 手机频频覆盖广什么意思 “无线路由器是带有无线覆盖功能的路由器”是说路由器的覆盖范围很广吗? 广布点多覆盖的含义 经济师考后需要注意什么?合格证书怎么办理? 初级经济师考试报名流程,考区如何选择? 购房房产税经验是怎样的 如何计算房产税房产税规定有哪些 优生五项,凝血四项,免疫八项,生化全项,还有abo血型+rh血型都是什么意思?和唐式筛查有什么区别 关于国家的别名问题! 3600多辆汽车沉到大西洋是哪个国家的汽车 埃姆毫米是什么意思 埃姆格艾斯什么意思? 谁能帮忙解释一下价格的配给功能 自由市场的价格配给是如何做出决定的呢? 为什么限制价格会产生配给制 如果*利用配给的方法来控制价格,这意味着()……一道微观经济学的问题。 配给制会使所有消费者境况变差吗?