做网站guangxiyanda,免费提供空间的网站,网站页面图片,内网访问 wordpress#x1f4dd;前言 这篇文章主要带大家初步认识一下指针#xff0c;供大家理解参考。 主要归纳与讲解#xff1a; 1#xff0c;指针与指针变量 2#xff0c;指针的基本使用#xff08;如何定义#xff0c;初始化#xff0c;引用#xff09; #x1f3ac;个人简介…前言 这篇文章主要带大家初步认识一下指针供大家理解参考。 主要归纳与讲解 1指针与指针变量 2指针的基本使用如何定义初始化引用 个人简介努力学习ing 个人专栏C语言入门基础 CSDN主页 愚润求学 每日鸡汤雄鹰不为暴风折翼狼群不因长夜畏惧 文章目录 一指针与指针变量1地址2指针3指针变量 二指针变量的基本使用1指针变量的定义4指针变量的大小2指针变量的初始化3指针变量的引用4解引用操作符“ * ” 一指针与指针变量
相信大家在学习C语言的时候常常听到别人提起地址和指针那究竟什么是地址什么是指针什么又是指针变量
1地址
●拿学校举例 学校建成时就有很多宿舍为了区分不同的宿舍每个宿舍都有自己独有的门牌号当学校来了新同学时学校就会给同学分配宿舍而宿舍的门牌号就代表了同学居住的地址。
●C语言中的地址也是这样 计算机的内存有很多储存单元为了区分这些储存单元计算机的操作系统就给每个储存单元都分配了自己唯一的编号当我们在C语言中定义变量的时候编译器就会给变量分配储存空间这个储存空间的编号就是存放变量的地址。
2指针
C语言把数据储存的起始地址称为指针。 简单来说“指针”不过是C语言中对地址的一个新描述新名字。 其实就是储存单元的编号 地址 指针
3指针变量
指针变量就是一种用来存放指针的变量。 就像存放数字的变量我们称为整型变量那么存放指针的变量我们就成为指针变量。 例如
int a 1; //我们把1赋值给变量a a是整型变量
int* ptr a; //我们把a的地址赋值给ptr ptr是指针变量二指针变量的基本使用
1指针变量的定义
定义格式
int *p1; //定义了指向整型的指针变量指针变量的类型是int*
float *p2; //定义了指向浮点型的指针变量指针变量的类型是float*
char *p3; //定义了指向字符型的指针变量指针变量的类型是char*这里的“*” 是一个标识符其含义是代表了变量的类型是指针类型。 这的 int/float/char 指的是指针所指向的数据的类型。 指针变量也有不同的类型把指针名字去掉就是指针变量对应的类型。
我们如何理解指针变量的类型呢 因为不同类型的变量所占用的内存的空间大小不同因此指针变量前面的数据类型表示保存的地址是对应数据类型的变量的指针
从语法上看我们只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉剩下的就是指针所指向的类型。
例如 int *p1; //指p1存放的是一个存放整型数的起始地址。 float *p2; //指p2存放的是一个存放浮点数的起始地址。 char *p3; //指p3存放的是一个存放字符型数据的起始地址。 如图
4指针变量的大小
我们都知道变量类型的大小与放什么内容有关 比如 int类型放的是数字大小是4字节。 char类型放的是字符大小是1个字节。 那么指针变量的大小也就取决于放一个地址需要多大的空间 计算机决定的 在32位机器上存放一个地址要32个bit位那么在**32位机器上一个地址的大小就是4个字节指针变量的大小也就是4个字节。 在64位机器上存放一个地址要64个bit位那么在64位机器**上一个地址的大小就是8个字节指针变量的大小也就是8个字节。
2指针变量的初始化
指针变量可以在声明时或者在赋值语句中初始化。可以被初始化为0NULL或者普通变量的地址。 NULL的指针不指向任何数据也被称为“空指针”表示数值0。 初始化如下
int m 3;
int *p1 m; //用普通整型变量m的指针初始化
double *p2 0; //p2指针变量不指向任何浮点数
int *p3 NULL; //p3指针变量不指向任何整型数当我们不初始化指针变量时指针变量的值是随机的。 ●注意 1尽可能使指针初始化以防止指针指向一个未知的或者未被初始化的内存空间变成野指针。 2除了0以外不能用其他具体的数字直接赋值给指针变量。
3指针变量的引用
指针变量和其他变量相似都可以进行赋值和取值操作。 例如
int m 3;
double f 4.5;
char ch a;
//主要说明一下下面几句代码
int *p1 m;
double *p2 f;
char *p3 ch
int *p p1①p1m 表示将m的地址赋值给p1此时p1就指向m。 ②p2f 表示将f的地址赋值给p2此时p2指向f。 ③p3ch 与前两句同理即p3指向ch。 ④pp1 表示将变量p1中的指针赋值到p变量中此时p也指向了m储存单元。 如图
4解引用操作符“ * ”
作用是取出指针变量所指向的内存单元中的值 下面我们在代码中理解如 1
int a 100;
int* pa a;
*pa 0;*pa0的作用是把a的值改成了0在这里*pa的意思是通过pa中存放的地址找到指向的空间 其实就是a 2
int p,m;
scanf(%d,m);
p m;
printf(%d %d\n,m, *p);
printf(%x,p);程序的输出结果 输入3 输出3 3 //这里打印的是 m 和p的值 22ff40 // 这里打印出的是 p中的指针不同的计算机可能值不同 不难发现m 与p的结果是相同的即 * 的作用就是通过p中存放的m的地址找到m。 ———————————————————————————————— 我的分享也就到此结束啦 要是我的分享也能对你的学习起到帮助那简直是太酷啦 若有不足还请大家多多指正我们一起学习交流 公主王子点赞→收藏⭐→关注 感谢大家的观看和支持最后☺祝愿大家天天开心