c语言笔记 指针进阶
int *p = malloc(100);
这句话的意思是,定义一个整型的指针p指向一块堆空间,malloc向系统申请一块空间,这块空间的解释方式是由指针的类型决定了,malloc这个关键字会随着你的类型来解释这块内存数据的一个存放。所以向系统申请了100个字节来存放整型数据。
我们的指针p是指向这个块内存的地址,也是首地址。整型指针p,偏移的单位一次是4个字节。
malloc申请的这块空间已经在初始化的时候协商好了用来存放整型数据。所以我们通过指针获取了这块空间的地址,我们就可以使用这块空间。通过偏移指针p来往这块空间里面放数据。
那如果说我们malloc是向系统申请了一块100个字节的空间大小,分成一块块的,也就是一个字节一个字节的,太精细了。要是我们要让系统给我们分配一个一大块一大块组合起来的内存,比如四个字节的组合起来,那么我们可以使用calloc关键字。
calloc(25,4);
这个表示calloc向系统申请了分成25份的大小,每一份是4个字节的一块内存空间。
const型指针
1.常指针
2.常目标指针
指针由两个功能,功能1指针指向地址, 功能2指针修改指向地址上的数值
常指针:不能修改指针指向,但是能修改指针指向地址的数值 常指针若是要修改指针指向地址的数值的前提是必须在初始化指针的时候 指向一个地址,否则在定义完之后就不能被修改了; 常目标指针:不能修改指针所指向地址的数值,但是常目标指针可以指向 任意的地址。