结构体指针

SmartGame SmartGame     2022-09-22     254

关键词:

  今天我们来说一说结构体指针,真如同前面讲过的结构体也是一种数据类型,既然是数据类型就可以通过它来定义指针变量,代码如下:

  

 1 #define _CRT_SECURE_NO_WARNINGS//一个warning,阻止对不安全函数的警告
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <stdlib.h>
 5 
 6 typedef struct List//首先定义一个结构数据类型//这时是没有分配内存空间的
 7 {
 8     int a;
 9     char name[32];
10 }List;
11 
12 void main()
13 {
14     List L1;//定义一个List类型的变量,这里分配了内存空间
15     List *L2 = NULL;//定义一个List类型的指针变量,它只有4个字节
16     L1.a = 23;
17     strcpy(L1.name,"name");//数据拷贝到name里
18 
19     //我们知道可以通过指针来操作变量,将地址传递给指针
20     L2 = &L1;
21     //可以通过指针来操作内存空间
22 
23     printf("%d 
",sizeof(L2));//指针的空间大小是 4 个字节不管是什么指针都是四个字节
24     printf("%d 
",L2->a);//23
25     printf("%s 
",L2->name);//name
26 
27 
28     system("pause");
29     return;
30 }

  然后我们可以看到用List类型定义的指针可以指向List类型的变量,即什么类型的指针可以操作什么类型的变量空间;我们可以看到结构体指针的寻标符是 -> ,寻标符没有太多的意义,可以理解为:寻标符,寻标符寻找到目标的符号;

  那么可不可以像普通的指针一样,可以自定义的分配内存空间呢?

 1 List* distribution2()
 2 {
 3     List *L = NULL;//定义一个指针变量
 4     L = (List*)malloc(sizeof(List));//在堆区为其分配空间//由于是手工分配的,所以如果不主动释放掉的话,会一直占着资源直到整个程序结束
5 L->a = 10; 6 strcpy(L->name,"name2"); 7 printf("L:%d ",L);//L所指向的地址 8 printf("&L->a:%d ",&L->a);//头元素的地址 9 return L; 10 11 } 12 13 void main() 14 { 15 16 List *L = NULL; 17 List L1; 18 printf("&L1:%d ",&L1);//L1的地址 19 printf("&L1.a:%d ",&L1.a);//L1头元素的地址 20 21 L = distribution2();//用L来接受传递回来的地址 22 printf("%d ",L->a);//10 23 printf("%s ",L->name);//name2 24 system("pause"); 25 }

 

  同样我们发现与基本的数据类型一样,同样可以为结构体指针自定义的分配内存空间,并且不会被自动析构掉;与普通的指针差别不大;

  同样我们发现不管是普通变量还是指针变量,他们分配的地址和头元素的地址是一样的;也就是说找到头元素的地址就找到了分配的内存地址;

c++基础3(函数指针结构体)(代码片段)

...针const修饰指针指针和数组指针和函数指针、数组、函数结构体结构体基本概念结构体定义和使用结构体数组结构体指针结构体嵌套结构体结构体做函数参数结构体中const使用场景结构体案例案例1案例2函数函数的定义函数的定义... 查看详情

结构体指针

一、定义结构体变量的两种方法:1、在主函数内部进行定义图中所述 structfunfirst其中的first就是一个结构体变量的名称2、定义结构体时顺便定义例如图中的a二、如何实现结构体变量的内容复制?-------直接引用C语言规定相同... 查看详情

c语言-结构体(代码片段)

结构体结构体类型数据的定义和引用方法一.结构体类型的概念定义结构体变量定义结构体类型变量的方法引用结构体成员成员引用引用结构体数据成员的方法整体引用初始化结构体变量结构体嵌套和用指针引用结构体成员指向... 查看详情

c语言结构体(结构体作为函数参数|结构体指针作为函数参数)(代码片段)

文章目录一、结构体作为函数参数二、结构体指针作为函数参数三、完整代码示例一、结构体作为函数参数结构体变量作为函数形参,在函数中,只能访问该函数形参,无法修改结构体内存的值;结构体变量通过形参形式传入,会在该p... 查看详情

c语言结构体指针详解(代码片段)

结构体指针,可细分为指向结构体变量的指针和指向结构体数组的指针。指向结构体变量的指针前面我们通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。前面讲过,&s... 查看详情

调用一个动态库中的函数,这个函数有一个参数是结构体指针,我如何使用这个指针?

我是希望利用动态库中的结构体指针,它就好比是一个返回值。在我自己的函数里定义了一个结构体指针,将其传递给这个动态库中的函数,将动态库函数中的结构体指针赋给我定义的结构体指针,但其值并不是动态库函数中结... 查看详情

结构体与typedef的使用,还有结构体指针的使用(二层结构体指针)

该类容摘抄自以下链接,为学习之后的记录,不是鄙人原创。学习链接:https://blog.csdn.net/a2013126370/article/details/78230890     typedefstruct              &nb 查看详情

c语言结构体(结构体中嵌套二级指针|为结构体内的二级指针成员分配内存|释放结构体内的二级指针成员内存)(代码片段)

文章目录一、结构体中嵌套二级指针1、结构体中嵌套二级指针类型声明2、为结构体内的二级指针成员分配内存3、释放结构体内的二级指针成员内存二、完整代码示例一、结构体中嵌套二级指针1、结构体中嵌套二级指针类型声... 查看详情

c零基础视频-40-结构体指针(代码片段)

目录结构体指针的定义使用结构体指针引用结构体成员结构体指针作为函数参数传递结构体指针的定义结构体指针的定义与基本数据结构的指针类似,使用"*"符号即可:#include<stdio.h>structtagPetDogcharszName[20];charszColor[20]... 查看详情

结构体,结构体指针作为函数参数的应用笔记

1.结构体,结构体指针作为函数参数有何区别#include<stdio.h>#include<string.h>structanimal{charname[30];intnum;};//使用结构体作为参数浪费内存需要建立结构体voidchange_struct(structanimalcat){cat.num=17;}//函数内部改变需要地址所以需要指针... 查看详情

c语言结构体(结构体中嵌套一级指针|分配内存时先为结构体分配内存然后再为指针分配内存|释放内存时先释放指针成员内存然后再释放结构头内存)(代码片段)

文章目录一、结构体中嵌套一级指针1、声明结构体类型2、为结构体变量分配内存(分配内存时先为结构体分配内存然后再为指针分配内存)3、释放结构体内存(释放内存时先释放指针成员内存然后再释放结构头内存)二、完整代码... 查看详情

结构体变量和结构体指针

为什么结构体在声明变量不需要去动态的分配内存,而声明结构体指针后,如果对成员进行操作需要分配内存,或者需要定义。首先变量的声明与定义:externinti;//声明,不是定义 inti;//声明,也是定义编译器会随机分配一个... 查看详情

结构体中定义函数指针(代码片段)

 结构体指针变量的定义定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct结构体标识符  成员变量列表;…;struct结构体标识符*指针变量名;变量初始化:struct结构体标识符变量名=初始化值1,初... 查看详情

golang指针和结构体

参考技术A于c语言相同,go中也有指针和结构体的概念。指针表示变量的内存地址,结构体用来存储同一类型的数据。定义一个指针变量,将变量a的地址赋给指针变量p。这样,指针变量p也就指向了变量a所在的内容空间。new函数返... 查看详情

在golang里如何实现结构体成员指针到结构体自身指针的转换

...p://goworldgs.com/?p=37在C语言中有一个经典的宏定义,可以将结构体struct内部的某个成员的指针转化为结构体自身的指针。下面是一个例子,通过FIELD_OFFSET宏计算结构体内一个字段的偏移,函数getT可以从一个F*的指针获得对应的T*对... 查看详情

c语言结构体(指针运算与指针内存操作|结构体成员偏移量计算)(代码片段)

文章目录一、指针运算与指针内存操作二、结构体偏移量计算一、指针运算与指针内存操作指针变量算术运算(指针可以是任意值):指针是一个变量,如果对指针进行算术/逻辑等运算,其效果等同于对int整型变量进行算术运算,编译... 查看详情

c++入门基础教程:c语言的指针与结构体到底怎么用?(代码片段)

...2.5.1指针数组2.5.2指向指针的指针2.6 指向函数的指针三、结构体3.1结构体的基础知识3.1.1结构体变量的定义3.1.2 结构体变量的初始化3.1.3访问结构体变量成员3.2结构体与函数3.3结构体数组3.4指 查看详情

结构体以及结构体指针——//知识复习//

结构体structnode        intdata;        charsex;s1,s2;           & 查看详情