c语言struct的声明定义问题,这段代码对吗,怎么理解?

问题描述

c语言struct的声明定义问题,这段代码对吗,怎么理解?

static struct {
int32_t hold_course_cd;
bool locked_course;
float locked_course_err;
} steer_state = {
hold_course_cd : -1,
locked_course : false,
locked_course_err : 0
};

解决方案

定义了结构体,然后再定义 了 static 的结构体变量 steer_state、并对它进行了初始化。

解决方案二:

static struct {
int32_t hold_course_cd;
bool locked_course;
float locked_course_err;
} steer_state = {-1, false, 0};

static struct {
int32_t hold_course_cd;
bool locked_course;
float locked_course_err;
} steer_state;
steer_state={-1,alse,0};

解决方案三:

将struct和后面那一大块,当成一个整体来看,就清晰了。
比如 static int a = 1;
这里的
int 相当于 struct {.....}
a 相当于steer_state
1 相当于 {...}

注意上面是“相当于”不是“等效于”,
就是用法一样的,本身的意义不一样而已。

另外,上面的方法代码也应该没问题的,只不过初始化的时候,还必须和struct体的成员顺序保持一致。

解决方案四:

结构体初始化不应该使用结构体内的变量名,直接按顺序初始化就行。

解决方案五:

luffy8ace 回答的很正确!

解决方案六:

没什么问题,gcc扩展语法。

解决方案七:

定义了一个结构体,它包含三个变量,第一个为整型变量,第二个为布尔型变量,第三个为浮点型,并把他们分别赋值为-1,false,0

时间: 2024-10-27 16:32:10

c语言struct的声明定义问题,这段代码对吗,怎么理解?的相关文章

c语言程序问题,求一段代码

问题描述 c语言程序问题,求一段代码 求一段c语言代码:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将其插入数组中 解决方案 #include<iostream> #include<iomanip> using namespace std; int main() { int i; cout<<"原来数列为:"<<endl; int a[11]={1,2,3,5,6,7,8,9,10,11}; for(i=0;i<=8;i

r语言-请大家看看我这段代码有啥问题,为什么会提示“更换参数长度为零”?

问题描述 请大家看看我这段代码有啥问题,为什么会提示"更换参数长度为零"? pse=rep(0,Iter) psa=rep(0,Iter) for (j in c(1:Iter)) { P=rep(0, T) for (i in c(1:T)) { n=rnorm(1,0,1) temp = exp(r-0.5*(s)^2 + s*n) if(i>=2) P= P[i-1] * temp if(i==1) P=initPrice*temp } pse[j]=P[T] psa[j]

struts2-求各位大神详细给我解释下下面这段代码

问题描述 求各位大神详细给我解释下下面这段代码 求各位大神详细给我解释下下面这段代码,我感觉理解起来好费劲啊,求求各位大神了,里边的重点知识,还有解释,谢谢 <TD class="tdStyle" align="center"> <a href="javascript:window.parent.addt('2<s:property value="id"/>','<s:property value=&

c语言-C语言,这段代码是什么问题啊?

问题描述 C语言,这段代码是什么问题啊? #include #include #include typedef struct { char name[20]; int age; }info; void getinfo(info*pinfo) { printf("请输入姓名:n"); gets(pinfo->name); printf(" 请输入年龄:n"); scanf("%d",&pinfo->age); } void ma

C语言udp协议,局域网下,这两段代码为什么不能通讯?

问题描述 C语言udp协议,局域网下,这两段代码为什么不能通讯? client.c 发送消息 #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<errno.h> #include<unistd.h> #include<sys/wait.

c语言-这段代码的问题请大神们告诉我一下吧~··· debug提示的问题我没懂。。。

问题描述 这段代码的问题请大神们告诉我一下吧~··· debug提示的问题我没懂... #include #include struct student { char name; int age; int no; struct student *next; }; main() { struct student create(void) { struct student *p1,*p2,*head; head = NULL; p1 = p2 = (struct student)malloc(siz

c语言-C语言STRUCT数组 不知道哪错了

问题描述 C语言STRUCT数组 不知道哪错了 #include int main(void) { int i,j; float temp; struct Students { char num; char name; char sex; char age; float score; }; struct Students student[5]= { {'0001','一号','男','19',99}, {'0002','二号','女','18',96}, {'0003','三号','女','19

图片-刚学c语言,各位大大帮我看看这段代码哪里有错,谢谢啦

问题描述 刚学c语言,各位大大帮我看看这段代码哪里有错,谢谢啦 题目是判断一个数是否能被3整除 解决方案 第一,主函数里调用函数方法即可,不可以定义函数:第二,你的函数名不规范,一般很少用一个单字母表示函数,当然f除外(习惯不好),可以命名为Divide_3.第三,返回值最好用宏定义设计为True或者False,逻辑更清晰. 解决方案二: main函数中调用x()函数#include int main(){x(s);}int x(int s){....} 解决方案三: 这个太基础了,你应该多看点

关于C语言struct的特殊扩展技巧

<Unix/Linux编程实践教程>中P69页,有写道,dirent结构中成员d_name用于存放文件名.注意在此系统中d_name被定义为只有一个元素的数组,这是如何做到的能?因为一个自负的空间只能存放字符串的结束字符.P92也询问,在struct dirent中,数组d_name[]的长度在有的系统上是1,而在有的系统上是是255.实际长度是多少?为什么会有这些不同? 对此,我也一直十分困惑,直到看到<深度探索C++对象模型>P19才终于明白. 01 //比如: 02 stru