struct和typedef struct在c语言中的用法

在c语言中,定义一个结构体要用typedef ,例如下面的示例代码,Stack sq;中的Stack就是struct Stack的别名。

如果没有用到typedef,例如定义

struct test1{
int a;
int b;
int c;

};

test1 t;//声明变量

下面语句就会报错

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #34bc26; background-color: #ffffff }
span.s1 { }
span.s2 { color: #c33720 }

struct.c:31:1: error: must use ‘struct‘ tag to refer to type ‘test1‘

test1 t;

^

struct

1 error generated.

声明变量时候就要用struct test1;这样就解决了

如果这样定义的话

typedef struct test3{
int a;
int b;
int c;
}test4;

test3 d;
test4 f;

此时会报错

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #34bc26; background-color: #ffffff }
span.s1 { }
span.s2 { color: #c33720 }

struct.c:50:1: error: must use ‘struct‘ tag to refer to type ‘test3‘

test3 d;

^

struct

1 error generated.

所以要struct test3这样来声明变量d;

分析一下:

上面的test3是标识符,test4 是变量类型(相当于(int,char等))。

我们可以用struct test3 d来定义变量d;为什么不能用test3 d来定义是错误的,因为test3相当于标识符,不是一个结构体,struc test3 合在一起才代表是一个结构类型。

所以声明时候要test3时候要用struct test3 d;

typedef其实是为这个结构体起了一个新的名字,test4;

typedef struct test3 test4;

test4 相当于struct test3;

就是这么回事。

#include<stdio.h>
#include<stdlib.h>

typedef struct Stack
{
char * elem;
int top;
int size;
}Stack;

struct test1{
int a;
int b;
int c;

};

typedef struct{
int a;
int b;
int c;

}test2;
int main(){

printf("hello,vincent,\n");
Stack sq;
sq.top = -1;
sq.size=10;
printf("top:%d,size:%d\n",sq.top,sq.size);

// 如果定义中没有typedef,就要用struct test1声明变量,否则报错:
struct test1 t;
t.a=1;
t.b=2;
t.c=3;
printf("a:%d,b:%d,c:%d\n",t.a,t.b,t.c);

test2 e;
e.a=4;
e.b=5;
e.c=6;
printf("a:%d,b:%d,c:%d\n",e.a,e.b,e.c);
return 0;

}
时间: 2024-10-13 00:14:42

struct和typedef struct在c语言中的用法的相关文章

C++/C中的struct和typedef struct用法和区别

struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct

typedef和define,const,struct和typedef struct

先看几个例子 (1) struct{ int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了. (2) struct test {int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了. 与 1 比,省写 了 test (3) typedef struct test {int x; int y; }text1,text2; 只说了 这种结构 的(类型

struct和typedef struct的用法

我首先想到的去MSDN上看看sturct到底是什么东西,虽然平时都在用,但是每次用的时候都搞不清楚到底这两个东西有什么区别,既然微软有MSDN,我们为什么不好好利用呢,下面是摘自MSDN中的一段话: The struct keyword defines a structure type and/or a variable of a structure type. A structure type is a user-defined composite type. It is composed o

struct和typedef struct

struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct

struct和typedef struct彻底明白了

struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct

转载:struct和typedef struct彻底明白了

struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct

(转) struct 和 typedef struct

struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct

【转载】struct和typedef struct彻底明白了

分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu

struct和typedef struct在c++中的用法

#include<iostream> using namespace std; struct test{ int a; }test; //定义了结构体类型test,声明变量时候直接test d: //如果用typedef的话,就会有区别 struct test1{ int a; }test11; //test11是一个变量 typedef struct test2{ int a; }test22; //test22 是一个结构体类型.==struct test2 //使用的时候,可以直接访问t