对于刚刚接触C语言的各位小伙伴们,可能前期的理论知识就已经十分枯燥,后期又开始学习指针、结构体、函数等等更加抽象的概念。
接下来,我为大家利用简单的语言讲解一下指针,如有错误,希望大家指出。
首先,我们看一下大家教材书上的概念:指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。非常难以理解的概念,大白话意思就是有一栋宾馆里面放各种类型的客人(int型的客人、char型、double型、short int型等等)指针就是前台记录各个客人的房间号码的表格,未存放数据的时候表格中的每一行都是固定的长度也就是说int*、char*它们存储单元长度相同。所以,不同类型的指针变量所占用的存储单元长度是想同的。默认,32位的计算机指针占用4个字节,64位计算机指针占用8个字节。但是,int型客人与char型客人的字节数不同。所以,存放数据以后存储空间长度发生改变。
我们直接在编译器中查看一下:
//初级指针的讲解
#include<stdio.h>
int main(){
int a=0;//这是一个int型的客人
int* pa = &a;//前台指针变量pa记录了a客人的房间号
printf("%p\n",pa);//打印查看a客人房间号
printf("%p\n", &a);//可以检验是否与上一个语句值是否一致
printf("%d\n", *pa);//*pa查看a客人的值
}