您的位置 首页 知识

c语言结构体定义和使用(typedef struct用法详解)

c语言结构体定义和使用?

结构体的定义

结构体的一般表现形势为

struct 结构体名{

成员列表

};

在成员列表中可以是几种基本数据类型如char,int等,也可以是结构体类型(可以是这个结构体本身,或者是其他结构体类型)

定义一:

定义结构体类型,不定义变量,比如一个人,有性别,有年龄,有名字。

struct Person{

char sex;

float years;

char *name;

};

然后再定义变量

struct Person ReCarChoi;

我们就定义了ReCarChoi这个人,它是Person这个结构体的一个变量,拥有里面的三个属性

(注意:这种定义方式struct关键字不能省略)。

定义二:

定义结构体类型,同时定义变量。比如

struct Person{

char sex;

float years;

char *name;

}ReCarChoi;

当你需要的结构体变量不多的时候,也可以直接省略结构体名字:

struct{

char sex;

float years;

char *name;

}ReCarChoi;

这样做书写简单,但是缺点就是后面无法利用该结构体定义新的变量;

定义三:使用宏定义

#define PER struct Person

PER{

char sex;

float years;

char *name;

};

PER ReCarChoi;

实际就是把struct Person替换成了PER,并无太多看点,只是写法方便了。

C语言typedef struct的用法?

在c中定义一个结构体类型用typedef:

typedef struct Student

{

int m;

}Stu;

用这种形式定义的时候,在声明结构体变量的时候可用:Stu stu1; 这种形式也等同于struct Strdent stu1;

这里的Stu和struct Student等同,Stu也就相当于struct Student的另一个名字。

请问下C语言中的结构体有什么用

结构体作用:

结构体和其他类型基础数据类型一样,只不过结构体可以做成你想要的数据类型。

在实际项目中,结构体是大量存在的,研发人员常使用结构体来封装一些属性来组成新的类型,结构体在函数中最主要的作用就是封装,封装的便利是可以再次利用,再次使用的时候只要根据定义使用就可以,结构体可以定义一些复杂数据类型,有了结构体给编程带来很大的方便。

C语言结构体命名

C语言中的结构体:在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。在C语言中,结构体的名字本质上还是一个标识符。由标识符,有数字、字母、下划线组成,且第1个字符只能是字母或者下划线。

c语言结构体初始化

结构体:在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构,结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。

C语言指向结构体成员运算符

指向结构体成员运算符属于二元操作符,其右边的操作符是成员变量的名称,左边的操作数是一个指向结构的指针。

用途:当使用指向结构体成员运算符时,需要定义一个指针。如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。

优先级:具有最高优先级,按自左向右的方向结合。

c语言中 讲一个int 类型的值 和一个结构体变量写进同一个文件夹

  • 代码比如这样int m=10;struct stu{int num;char name[10];}td;然后给结构体变量td赋值之后讲 m 和结构体变量的值 写进磁盘FILE *p1,*p2;if((p1=fopen("d:text.dat","wb"))==NULL){ exit(0);}if((p2=fopen("d:text.dat","wb"))==NULL){ exit(0);}fwrite(&m,sizeof(int),1,p1);fwrite(&td,sizeof(struct stu),1,p2);fclose(p1);fclose(p2);这个时候结构体td的值和变量m的值 已经写进磁盘了,但是为什么我再从磁盘单敞揣搬废植肚邦莎鲍极独读取变量m的值得时候却读取不出来???
  • 这样会覆盖的FILE *p1;if((p1=fopen(&q敞揣搬废植肚邦莎鲍极uot;d:text.dat","wb"))==NULL){ exit(0);}fwrite(&m,sizeof(int),1,p1);fwrite(&td,sizeof(struct stu),1,p1);fclose(p1);这样就行,不过读取时要先读m,再读td

c语言结构体赋值问题

  • int mem_open(struct inode *inode, struct file *filp){ struct mem_dev *dev; int num = MINOR(inode-i_rdev); if (num = MEMDEV_NR_DEVS) return -ENODEV; dev = &mem_devp[num];filp-private_data = dev; return 0; }这里的filp-private_data = dev;赋值是不是把dev结构体指针里相关的数给private_data,还是把整个mem_dev都给private_data??
  • 如果filp-private_data是一个指针,那么只是将dev的内存地址赋值给了private_data;如果filp-private_data是结构体,如果要把dev结构体指针里相关的数给private_data,则需要写成filp-private_data = *dev;

C语言结构体嵌套

  • 在一个.h文件中定义了两个结构体:typedef struct{int x;int y;}point;typedef struct{point ptFirst;point ptSecond;}rect;编译报错: error: field ptFirst has incomplete type error: field ptSecond has incomplete type修改为:typedef struct{int x;int y;}point;typedef struct{point *ptFirst;point *ptSecond;}rect;依旧报错,求指点。
  • 这个我也不太懂

C语言程序设计,结构体,数组,指针,求指教!!

  • #includestdio.hstruct student{long xh;char *name;float c;float gs;float yy;float sum;}s={410208,"wang",90,80,70},t[50];void pt(struct student *r,int n){int i;for(i=0;in;i++)printf("%ldt%st%.ft%.ft%.ft%.fn",(r+i)-xh,(r+i)-name,(r+i)-c,(r+i)-gs,(r+i)-yy,(r+i)-sum);}void in(struct student *r,int n){int i;for(i=0;in;i++){scanf("%ld%s%f%f%f",&(r+i)-xh,(r+i)-name,&(r+i)-c,&(r+i)-gs,&(r+i)-yy);(r+i)-sum=(r+i)-c+(r+i)-gs+(r+i)-yy;}}void main(int argc,char *argv[]){int m;printf("input m=");scanf("%d",&m);in(t,m);pt(t,m);}为什么得不到结果呢?求大神帮帮忙啊
  • 你的数据粻丁纲股蕺噶告拴梗茎结构定义得有问题。struct student{long xh;char name[32]; *这里要用数组,而不是指针,否则在下面in函数的scanf的时候,没有为这个指针分配内存空间,会造成字符串写入野指针,非法访问。*float c;float gs;float yy;float sum;}

C语言 写一个简单结构体

  • 设定五个角色,输入名字,血量,法力值。 设定完后按1~5,调出想要的角色,0为结束。求详细思路。
  • 参考代码:#includestdio.hstruct person{ char name[20]; 名字 int H; 血量 int M; 魔法};int main(void){ int input; struct person p[5] = {{"A", 30, 100}, 设定不同人数属性 {"B", 40, 200}, {"C", 50, 300}, {"D", 60, 400}, {"E", 70, 500}}; printf("please input number (1~5): n"); scanf("%d", &input); 输入数字 printf("Name: %s, H: %d, M: %dn", p[input-1].name, p[input-1].H, p[input-1].M); 输出对应人数属性 return 0;}输出效果please input number (1~5):1Name: A, H: 30, M: 100Press any key to continue

C语言 结构体 变量

  • 请问struct CARD temp是什么意思,struct后面分别加 CARD和 temp表示什么struct CARD 窢粻促救讵嚼存楔担盲card[52]又是什么意思,为什么两个card 还一个大写一个小写呢
  • struct CARD temp的意思是定窢粻促救讵嚼存楔担盲义一个CARD类型的变量temp,跟int ,float差不多,就像int temp;一样,而struct CARD card[52]意思是定义一个CARD类型的数组