本篇文章给大家谈谈c语言结构数组赋值,以及c语言怎么给数组赋值字符串对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
C语言中结构体中的数组,不能直接赋值吗?
1、//structstudent***ao={3,123};可以。
2、因为数组名就是数组第一个元素的指针常量,是一个常量左值。可以赋值的必须是非常量左值,常量左值和右值是不可以被赋值的。 以上是我个人的理解,有疑问继续追问。
3、数组是不能被直接赋值,但是数组可以在声明的同时进行初始化。可以用puts(stu[1].name);进行输出。
4、st.name=123; 非法,常量字符串不能直接赋值给字符数组,因为st.name 地址是确定的,不能再改了。 char name[10]=123;可以的,定义时,进行初始化字符数组。
5、char a[8]={i,l,o,v,e,y,o,u};把8个字符依次分别赋给c[0]~c[7]这8个元素。如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。
c语言结构体数组赋值
用字符常量逐个初始化数组。例如:char a[8]={i,l,o,v,e,y,o,u};把8个字符依次分别赋给c[0]~c[7]这8个元素。
c语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h头文件中的strcpy函数来完成。
scanf(%c%c%c,&a,&b,&c);输入为:d e f 则把d赋予a, (空格)赋予b,e赋予c。因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此把 作为下一个字符送给b。
数组不能整体赋值,需要逐个元素赋值,但是如果这个数组是一个结构体的成员,可以通过结构体之间的直接赋值间接达到数组整体赋值的效果,即:tmark=tmark;//非法,数组不能直接整体赋值。
结构体二维数组的赋值可对结构体变量的成员逐个赋值,这种方式和数组相像,数组就是逐个元素逐一赋值,不同于数组,标准C中结构体变量可以整体赋值。
c语言结构体数组赋值,为什么我赋值时就出错?
1、指向的变量赋值。错误1:类型不同,*sptr 是指向了变量,就是变量本身,而 &volpid 是变量的地址,一个是变量,一个是变量的地址。错误2:sptr 没有初始化,给其指向的变量赋值,可能造成崩溃。
2、int pri;};,还是出错,因为之后的Pri没有声明或定义。如果用struct Pri { char ch;int pri;};,纯C的话不行,Pri是结构体名而不是类型名,会编译出错。C++下会把Pri当作struct Pri,不会出错。
3、结构体里面的数据不能这样赋值list_letter[0].biao_num[MAX]={1,2,3,4,d};,这是定义一般数组初始化的形式。
4、scanf是从标准输入缓冲区中读取输入的数据,而%c的字符输入格式会接收回车字符,在输入第一个scanf时输入一串字符后按 回车结束,输入缓冲中保存了这个回车符,遇到第二个scanf时,它自动把这个回车符赋给了ch2。
5、c语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h头文件中的strcpy函数来完成。
6、这就牵扯到了指针的赋值,而指针的赋值是有原来的语义的。所以事情会变得很复杂。 总而言之就是C作为一种接近底层的语言,它的数组和指针以及内存的使用有数不清的关系,所以不支持这种高级的语法。
c语言数组的赋值
1、C语言对数组的初始化赋值还有以下几点规定:1) 可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只 给前面部分元素赋值。
2、引入头文件#include stdafx.h和#include stdio.h。
3、除了初始化时可以用=给整个数组赋值外,其它情况下只能通过=给数组的某个元素赋值。
关于c语言结构数组赋值和c语言怎么给数组赋值字符串的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想更多这方面的信息,记得收藏关注本站。