㈠ c语言结构体数组成员怎么赋值
intmain(void){
structstudentsbao={};
printf("%d,%s ",bao.id,bao.name);//输出是4224528,空(应该是null)
//structstudentsbao={3,"123"};可以。第一种赋值方法
//strcpy(bao.name,"bao");//可以,
//printf("%d,%s ",bao.id,bao.name);
//bao.name="bao";错误“stray'351'inprogram”其他是乱码,
//bao.name[0]='a';
//bao.name[0]='/0';
//printf("%d,%s ",bao.id,bao.name);
/*这样可以,*/
//chararr[10]="baobao";
////bao.name=arr;//error""
//scanf("%s",bao.name);//可以,
//printf("%d,%s ",bao.id,bao.name);
//所以scanf那一类函数都可以。
//还有就是memcpy函数也是可以的
return0;
}
(1)c语言结构体直接赋值扩展阅读
C语言结构体数组的直接赋值及数组的长度计算:
#include<stdio.h>
//自定义一个字符串的结构体,包含字符串和字符串长度两个变量
typedefstructStr{
charch[100];
intlength;//char数组(字符串)的长度
}myStr;
//刚开始声明变量时每个变量的字符串长度length都为0
//这里以长度为10的数组为例,数组长度是1000
//对第0个到第9个结构体数组的长度同时赋值为0
myStrmyStr1[10]={
[0...9]={
.length=0,
}
};
intmain(){
inti;
for(i=0;i<10;i++){
printf("%d ",myStr1[i].length);
}
return0;
}
㈡ 在C语言中。结构体变量之间可以相互赋值吗
1、结构体变量是可以直接赋值的。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。
2、C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
㈢ C语言用字符串直接给结构体赋值方法
你这个明显有问题 你怎么吧字符数组复制给了结构体 memcpy(&stime,buf,8); 这个有问题
struct sTime
{
char year[4];
char month[2];
char day[2];
};
int main()
{
struct sTime stime= {"2013", "05", "25"};
printf("year: %s\n",stime.year);
printf("month: %s\n",stime.month);
printf("day: %s\n",stime.day);
}
㈣ 结构体什么时候可以直接赋值C
在声明的时候和后续赋值略有不同,在C语言中是两种处理方法。
如果有结构体
struct test
{
int a;
char c;
int b;
};
定义的时候,可以
struct test var = {1,'c', 2};
这样初始化,结果为var.a = 1, var.c = 'c', var.b = 2;
但是如果后续赋值
var = {1,'c', 2};
就会报错。因为在C语言中不支持这种形式的操作。
不过可以取巧转换一下,改成
var = (struct test){1,'c', 2};
这样就可以了。 在这种情况下,系统会申请一个临时变量,并初始化为该值,再对var进行赋值。而同类型结构体之间赋值操作是C语言规则允许的。
㈤ c语言结构体能否整体赋值
可以的,但需要保证是具有相同结构的结构体变量。
可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。如student1和student2都是student类型的变量,可以这样赋值:student1= student2;
假设申明了两个成员列表完全一样的两个结构体,编译器会当作两个完全不同的类型,即使他们的成员列表是一样的,令两个结构体的变量间赋值,则是非法的。
(5)c语言结构体直接赋值扩展阅读:
结构体的相关操作规则:
1、可以引用一个结构体变量中的一个成员的值:
例如, student1.num表示结构体变量student1中的成员的值,student1.num的值为10001。引用结构体变量中成员的一般方式为:结构体变量名.成员名。例如可以这样对变量的成员赋值:student1.num=10010;
2、不能将一个结构体变量作为一个整体进行输入和输出:
例如,已定义student1和student2为结构体变量,并且它们已有值。不能企图这样输出结构体变量中的各成员的值:cin>>student1; 只能对结构体变量中的各个成员分别进行输入和输出。
㈥ C语言结构体数组的定义和赋值
C99标准出来以前,C语言不支持动态定义数组大小,只能采用动态分配指针方式来完成动态数组的个数定义。如:
struct
st
{
int
x,y;
char
str[10];
};
struct
st
*array
;
int
n;
printf("input
n:
");
scanf("%d",
&n);
array=(struct
st*)malloc(n*sizeof(struct
st));
//动态分配n个结构体空间,接下来array的操作,与数组操作是相同的,如:array[0].x=1
;
C99以后,C语言标准开始支持动态定义数组,但动态数组,在其确定个数之后,在其生命期中,就不可变了。如:
struct
st
{
int
x,y;
char
str[10];
};
int
n;
printf("input
n:
");
scanf("%d",
&n);
struct
st
array[n]
;
//定义动态数组
array[0].x=1
;
㈦ C语言结构体赋值
首先这样编译会出错。
struct
{
char ch;
int pri;
}
定义结构体类型,后面没有跟分号,说明后面是该类型的变量列表,之后遇到Pri接下来的空格后面跟的lpri编译器就不知道要干什么了。
如果用struct
{
char ch;
int pri;
};,还是出错,因为之后的Pri没有声明或定义。
如果用struct Pri
{
char ch;
int pri;
};,纯C的话不行,Pri是结构体名而不是类型名,会编译出错。C++下会把Pri当作struct Pri,不会出错。
可以这么写:
typedef struct
{
char ch;
int pri;
}Pri;
Pri lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}};
Pri rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
最后两行也可以这样写:
Pri lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}},
rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
注意倒数第二行是分号还是逗号会影响初始化列表的语义。
(顺便,这个不是赋值。)
话说回来,一开始的写法去掉Pri是正确的(只是定义之后无法访问该类型,一般不推荐):
struct
{
char ch;
int pri;
}
lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}},
rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};
====
[原创回答团]
㈧ C语言,结构体中的数组怎么赋值,
intmain(void){
structstudentsbao={};
printf("%d,%s ",bao.id,bao.name);//输出是4224528,空(应该是null)
//structstudentsbao={3,"123"};可以。第一种赋值方法
//strcpy(bao.name,"bao");//可以,
//printf("%d,%s ",bao.id,bao.name);
//bao.name="bao";错误“stray'351'inprogram”其他是乱码,
//bao.name[0]='a';
//bao.name[0]='/0';
//printf("%d,%s ",bao.id,bao.name);
/*这样可以,*/
//chararr[10]="baobao";
////bao.name=arr;//error""
//scanf("%s",bao.name);//可以,
//printf("%d,%s ",bao.id,bao.name);
//所以scanf那一类函数都可以。
//还有就是memcpy函数也是可以的
return0;
}
(8)c语言结构体直接赋值扩展阅读
C语言结构体数组的直接赋值及数组的长度计算:
#include<stdio.h>
//自定义一个字符串的结构体,包含字符串和字符串长度两个变量
typedefstructStr{
charch[100];
intlength;//char数组(字符串)的长度
}myStr;
//刚开始声明变量时每个变量的字符串长度length都为0
//这里以长度为10的数组为例,数组长度是1000
//对第0个到第9个结构体数组的长度同时赋值为0
myStrmyStr1[10]={
[0...9]={
.length=0,
}
};
intmain(){
inti;
for(i=0;i<10;i++){
printf("%d ",myStr1[i].length);
}
return0;
}