数据类型
基本类型
char short int long float double
指针变量
编号(地址):内存中每一个字节分配有一个号码
定义一个变量 存放上面的号码 这样的变量叫做指针变量
取变量的地址用 &
&num-------- 代表变量num的起始地址
需求:定义一个指针变量 保存num的地址
在定义的时候 *说明p是指针变量 而不是普通变量
num的地址 与p建立关系
使用中:*P 表示取p保存的地址编号 对应空间的内容
指针变量的两种类型:
1.自身(指针)类型:
只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型
(1)intptr;//指针的类型是int (2)charptr;//指针的类型是char (3)intptr;//指针的类型是int (4)int(ptr)[3];//指针的类型是int()[3] (5)int*(ptr)[4];//指针的类型是int(*)[4] ————————————————
2.指针所指向的类型:
指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。 从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型
(1)intptr; //指针所指向的类型是int (2)charptr; //指针所指向的的类型是char (3)int**ptr; //指针所指向的的类型是int* (4)int(ptr)[3]; //指针所指向的的类型是int()[3] (5)int(ptr)[4]; //指针所指向的的类型是int()[4]
指针变量指向类型的作用:决定了指针变量所取空间的内容的宽度
决定了指针变量 +1 跳过的单位长度
指针的值
指针所指向的内存区或地址
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32 位程序里,所有类型的指针的值都是一个32 位整数,因为32 位程序里内存地址全都是32 位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX 为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的
p1=0x01020304(int占四个字节)
p2=0x0304(p2的指向类型为short类型 short占两个字节)
p3=0x04 (p3的类型为char类型 char占一个字符)
参考原文链接:https://blog.csdn.net/qq_33098049/article/details/89195250
指针如此简单——1小时透彻理解C语言指针_哔哩哔哩_bilibili
|