当前位置:首页 » 编程语言 » c语言struct赋值

c语言struct赋值

发布时间: 2022-03-31 15:06:07

A. 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}};
====
[原创回答团]

B. C语言 结构体的赋值

这叫结构体变量声明与初始化。
按规定,花括号内的 初始化 数值,必须为常量。
struct student a[3]={zhangsan,{。。。。}; //错在初始化用了 非常量
你的结构数组a[3] 里用了变量 zhangsan, 语法上是错的。
你可以改成:
struct student a[3]={ {0}, {1002, 后面照抄。。。。。};
其中 {0} 是给数组元素 a[0] 初始化,充0 占位。
声明完毕,语句部分 另加一句赋值语句: a[0]=zhangsan; 就把zhangsan的数据传给a数组的 元素 a[0] 了。

C. c语言结构体赋值问题

都不是,dev是一个指针,而filp->private_data = dev的意思是将dev的值赋值给filp->private_data,dev的值又只是&mem_devp[num]
的地址。所以这里只是把dev所指向的地址赋值给了filp->private_data

D. c语言中结构体赋值问题

printf("%s")函数接受字符串是用空格做结束符的,不能通过改变输入来正确接收。建议使用gets()函数来接受带有空格的字符串。还有就是字符的接收,如果此次接收字符之前有字符输入,要在之前清空一次输入缓冲区或者用getchar()把控制字符清楚掉。同时要消除本次输入带来的控制字符。

E. C语言中struct各个成员的赋值有顺序吗

单个成员赋值没有顺序,如果是结构数组,那么数组初始值就有顺序了

F. C语言怎么给结构体里的结构体赋值

c里面是不能这样赋值的, 这种方式只有在定义的时候初始化才可以
如果 int a[][2] = { 2,2}这是正确的,但是定义数组之后再 a = { 2,2}是不正确的, 你还是一个一个赋值吧. 另外说明一下吧, 定义的时候是给变量申请内存, 编译器会把你初始话的值赋值到内存, 但是如果 以后在赋值的时候, 就成了指针了, 语法就不正确了
m1->edges=
{
{0,1,0,0},
{1,0,1,0},
{0,1,0,1},
{0,0,1,0}
};

------
你可以把你要初始话的这个数组定义个const数组, 后面再用for来赋值吧, 没有其他办法
{
{0,1,0,0},
{1,0,1,0},
{0,1,0,1},
{0,0,1,0}
};

G. c语言结构体里的一个元素如何赋值

如果弄的是结构数组,那就给学好设置为负数表示无效记录就可以了啊,循环的时候加上一个判断,如果是链表或者树,可以直接删除的,
呵呵,不知道问的是不是这个意思

array[ i ].data = xxx;这样可以吗?

array[ i ]需要改变的结构
array[ i ].data 该结构的元素
xxx新的值
不知道是不是这个意思,呵呵,如果用vc就应该没问题啊

H. c语言如何给结构体指针赋值

结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存。

举例:编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数组(每组三个成绩)(int[3]),依次调用函数

#include <stdio.h>

#include <stdlib.h>

struct student //建立结构体,学号,姓名,3门课的分数

{

int num;

char name[10];

int score[3];

}Stu[5]; //初始化,一共5个学生的数据

void getScore(struct student * p) //函数:向结构体读取分数,一共三门课

{

int i, j;

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

for (j = 0; j < 3; j++)

scanf_s("%d", (&(p+i)->score[j]));

}

void getNum(struct student * p) //函数:向结构体读取学号

{

int i;

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

scanf_s("%d", &(p + i)->num);

}

void getName(struct student * p) //函数:向结构体读取姓名

{

int i;

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

scanf("%s", &(p + i)->name);

}

int main()

{

int i, j, average[3] = { 0 }; //average数组储存每门课的平均分

getNum(Stu); //函数调用

getName(Stu);

getScore(Stu);

for (j = 0; j < 3; j++)

{

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

average[j] += Stu[i].score[j];

}

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

{

printf("num = %d name = %s Score:", Stu[i].num, Stu[i].name); //依次打印学号 姓名

//printf("%d %d %d", Stu[0].score[0],Stu[0].score[1],Stu[0].score[2]);

for (j = 0; j < 3; j++) //打印三门课的分数

printf(" %d", Stu[i].score[j]);

printf(" ");

}

printf("average:");

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

printf("%f ", (float)average[i]/5); //打印三门课平均分

printf(" ");

system("pause");

return 0;

}

如:

scanf("%c%c%c",&a,&b,&c);

输入为:

d e f

则把'd'赋予a, ' '(空格)赋予b,'e'赋予c。因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此把' '作为下一个字符送给b。

只有当输入为:def(字符间无空格) 时,才能把'd'赋于a,'e'赋予b,'f'赋予c。

热点内容
安卓搜狗输入法哪个版本 发布:2025-01-17 08:55:34 浏览:338
素材包加密 发布:2025-01-17 08:55:22 浏览:134
微信相册怎么加密 发布:2025-01-17 08:53:26 浏览:370
安全加密配置成功是什么 发布:2025-01-17 08:49:40 浏览:856
直流电存储 发布:2025-01-17 08:47:33 浏览:552
容声冰箱压缩机多少钱 发布:2025-01-17 08:18:38 浏览:886
微信怎么取消密码怎么设置 发布:2025-01-17 08:06:18 浏览:793
如何帐户密码 发布:2025-01-17 07:56:11 浏览:612
服务器内网ip地址安全 发布:2025-01-17 07:33:18 浏览:186
华为新算法 发布:2025-01-17 07:31:43 浏览:56