↑ 收起筛选 ↑
C语言struCt后面有指针
2020-10-19

next指向下一个指针 LinkList用于声明此结构类型,用法与int一样.

结构体就像数组一样,其中的数据是有互相联系的,有些情况下定义一些简单的变量是不能反映出数据之间的内在联系,所以我们就把这些数据组合成一个项,而这个项中包含着很多不同的数据项,这就是结构体. 简单理解下,就是说把一些有内在联系的不同变量放在一起封装成一个整体,这就是结构体. 指针,其实就是一个存放地址的变量,指针可以指向变量,数组,结构体等数据所在的内存单元. 指针就是用来通过地址去找数据的,只要你把该数据的地址给指针,那么当你用到指向这个数据的指针时就等于在使用该数据.

struct a;a属于普通结构变量,(比如int a;整型变量.占用4个字节的内存,内存地址固定,只要没有声明为const则其值可变)struct a的内存占用大小视我们规定struct拥有哪些变量,总大小就是它的内部变量占用字节之和.那么,类似的.指针

typedef struct{ int a ;}TYPE ;使用结构体变量的成员时候用.如TYPE v ;采用 v.a= xxx;使用的是结构体指针指向的结构体的成员的时候用->如 TYPE *p ;p = &v ;采用p->.a = yyy ;总之,->前面一定是个指针, “.”前面是个结构体或共用体变量

//在结构体中包含函数指针,//这样,可以使用结构体,调用函数.//这个有点像C++的面向对象的类 //十分好用. #include "stdio.h" struct DEMO { int x,y; int (*func)(int,int); //函数指针 }; int add2(int x,int y) { return x+y; } int main() { int ret=0; struct DEMO demo; demo.func=&add2; //结构体函数指针赋值 ret=demo.func(3,4); printf("func(3,4)=%d\n",ret); }

linklisk就是struct node {}类型的指针,就和别的类型指针如char *,int *一样用,别被它的形式吓到了

这个指针有两个域:第一个域 int val; 为值域 就是放的是真实的值第二个域struct listnod*next; 为指针域 放的是下一个结构体的地址;typedef struct listnod * nod; 声明了一个 名叫nod的指针结构体;

c语言结构体里面 变量后面加冒号,表示位段.冒号后面一般跟某个数值表示这个变量占几位.比如 struct abc{int f1 :1;}表示变量f1只占一位(一个字节8位)的空间.但是在你的结构体里面,我看不出来是做什么的.看你的代码,应该是单片机或者嵌入式方面的.

对着呢呀,c的值就应该是0X0803,因为我们平常用的x86的cpu是小端存储结构(所谓小端就是变量的低字节存放低地址的数据,高字节存放高地址的数据,大端存储与此相反),我写了一个测试程序,如下: #include <stdio.h> typedef struct

正好有个通讯录管理,如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_NAME 11#define MAX_SEX 3#define MAX_BIRTHDAY 9#define MAX_TEL 21#define MAX_MOBLIE 21#define MAX_FAX 21#define MAX_

延伸阅读: