当前位置:首页 » 编程语言 » c语言结构体直接赋值
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言结构体直接赋值

发布时间: 2022-08-31 19:17:45

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;

}