【C语言零基础入门篇 - 12】:指针进阶

指针进阶


内存四区

在系统为程序开辟内存时,将内存区域划分为4块,分别为:

(1)栈区
(2)堆区
(3)全局静态常量区(全局区)
(4)代码区

栈区:存放函数的形参、局部变量等。由编译器自动分配和释放,当函数执行完毕时自动释放。
堆区:用于动态内存的申请与释放,一般由程序员手动分配和释放,若程序员不释放,则程序结束时由操作系统回收。
全局静态常量区(全局区):用于动态内存的申请与释放,一般由程序员手动分配和释放,若程序员不释放,则程序结束时由操作系统回收。
在这里插入图片描述
代码区:存放可执行的代码,一般为CPU 执行的机器指令。(由编译器翻译后的指令放在代码区)

结构体指针变量的使用

结构体指针变量:是一个保存结构体变量地址的指针变量,我们对这个指针变量进行解引用,就可访问到这个结构体变量的数据以及更改数据。

结构体指针变量的定义格式:指针指向的类型 * 指针名 = NULL;
在这里插入图片描述

结构体指针

通过结构体指针引用结构体变量及其结构体成员:

结构体指针引用符:‘->’

结构体指针引用成员的基本格式:结构体指针名->结构体成员名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结构体指针数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 方式一:通过for循环输出成员的名字
    在这里插入图片描述
  • 方式二:通过p = p->next,来获取成员名字并输出
    在这里插入图片描述

动态内存分配

什么是动态内存分配:
指用户可以根据自己的需要,向系统申请所需大小的内存空间;由于没有声明部分来定义它们是为变量的地址还是为数组的地址,所以只能通过指针来引用它们。

要使用动态内存开辟,需要包含stdlib.h头文件

怎样建立内存的动态分配
①malloc函数:malloc(int size);
用于分配一个大小为size的内存区域。
例如:char *p=(char *)malloc(100)

②calloc函数:calloc(unsigned n,int size);
用于分配n个大小为size的连续内存区域,可以为一维数组开辟动态内存空间。
例如:int *p=(int *)calloc(10,sizeof(int));

③realloc函数:realloc(void * p,unsigned int size);
用于改变已经通过malloc函数或calloc函数开辟的内存空间的大小。
例如:realloc(p,sizeof(int)*6);

④free函数:void free(void * p);
用于释放指针变量所指向的动态内存空间。
例如:free( p );

注意:动态内存需要手动申请,在对堆区申请,申请完后需要自己释放。

  • 例1:malloc(申请的内存大小) ;单位:字节 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街 三 仔

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值