浅谈c语言typedef 与结构体指针(个人小经验)



#include<stdio.h>

#include<string.h>

typedef struct emp{

char sex[8];

char name[15];

int age;

}*emp;//这里我们用typedef把emp这个结构体变成了*emp这种指向结构体成员的结构体指针

/*typedef struct emp{

char sex[8];

char name[15];

int age;

}pi,*emp;//为了程序的可读性最好不要这样声明*/

int main(){

emp p;//注意这里emp是指向结构体的指针变量 emp *p这样的声明是错误的,emp p这样声明了结构体类型的指针变量p

strcpy(p->sex,"male");

strcpy(p->name,"zhangfei");

p->age=20;

printf("sex is %s\n",p->sex);

printf("name is %s\n",p->name);

printf("Age is %d\n",p->age);

return 0;

}

浅谈c语言typedef 与结构体指针(个人小经验)

时间: 2024-08-01 10:43:35

浅谈c语言typedef 与结构体指针(个人小经验)的相关文章

c语言中的结构体指针类型的cast

1.我们在c语言中会经常碰到强制类型转换. 在这,我介绍一种结构pointer类型转换,但是有前提(有点类似于c++中的继承中的子父对象的cast). 简单的介绍一下: 首先我们要知道一个结构的指针,并且 在这个结构体中,第一个结构成员必须也是一个结构体(最好是结构体类型). 那么我们可以这个结构体指针转换为指向这个结构体中第一个成员结构体的指针. 直接看代码: ************************************ /* struct transform for struct

浅谈swift中的那些结构体和枚举

首先呢, 我们先写一个struct struct Point { var x = 0 var y = 1 mutating func change (newX:Int,newY: Int) { x = newX y = newY } } var p1 = Point(x: 4, y: 4) p1.x //4   在这里呢,可能有人会问,为什么在func前面要加一个mutating, 如果不加的话, 编译器抛出错误,报出不能在实例方法中修改属性值 所以呢, 我们必须如果想改变成员变量的话, 就必须

C语言中的结构体,结构体数组

C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存对齐的问题.也就是内存里面会有空档. 1.结构体的定义和赋值 结构体是可以直接初始化的,在定义的时候,就可以初始化,而且如果你的结构体中恰好有字符数组的话,这个时候初始化是不错的选择,原因很简单,字符数组只能定义的时候直接初始化 后来就不可以了,后来你就只能用strcpy函数来拷贝初始化了. str

黑马程序员——c语言基础:结构体和枚举---typedef的使用

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.什么是结构体 当一个整体由多个数据构成时,我们可以用数组来表示这个整体,但是数组有个特点:内部的每一个元素都必须是相同类型的数据. 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高等数据构成,这些数 据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可以是浮点型. 为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它

浅谈C语言中的联合体(转载)

联合体union 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union).在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构: 2)它的所有成员相对于基地址的偏移量都为0: 3)此结构空间要大到足够容纳最"宽"的成员: 4)其对齐方式要适合其中所有的成员: 下面解释这四条描述: 由于联合体中的所有成员是共享一段内存的,因此每个成员的存放首地址相对于于联合体变量的基地址的偏移量为0,即所有成员的首地址都是一样的.为

浅谈C语言中的强符号、弱符号、强引用和弱引用

摘自http://www.jb51.net/article/56924.htm 浅谈C语言中的强符号.弱符号.强引用和弱引用 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014-10-31 我要评论 这篇文章主要介绍了C语言中的强符号.弱符号.强引用和弱引用的定义及相关内容,非常的简单易懂,有需要的朋友可以参考下 首先我表示很悲剧,在看<程序员的自我修养--链接.装载与库>之前我竟不知道C有强符号.弱符号.强引用和弱引用.在看到3.5.5节弱符号和强符号时,我感觉有些困惑

C语言编程入门——结构体(上)

 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问. 结构体是自己定义的结构类型,为以后创建链表结点作铺垫. 定义结构体的三种方式: # include <stdio.h> //第一种方式 struct Student_1 //str

[转]C语言指针 之 结构体指针

在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型.创建结构体指针是极常见的.下面是一个例子: 1 typedef struct 2 { 3 char name[21]; 4 char city[21]; 5 char state[3]; 6 } Rec; 7 typedef Rec *RecPointer; 8 9 RecPointer r; 10 r=(RecPointer)malloc(sizeof(Rec)); r是一个指向结构体的指针.请注意,因为r是一个指针,所以像其他指

C语言 结构体指针赋值 incompatible types when assigning to type &#39;char[20]&#39; from type &#39;char *&#39;

strcpy(pstudent->name, "guo zhao wei "); 为什么错误,该怎么写,(红色行) 追问 为什么不能直接赋值啊, 追答 用char nnnn[20]定义的,用strcpy 用char *ppp定义的,用=来赋值 C语言 结构体指针赋值 incompatible types when assigning to type 'char[20]' from type 'char *'