内存
说到指针我们可以先看内存,内存被分为以字节为单位的单元,内存又分为栈区,堆区,静态区,栈区存放临时变量,形参,局部变量;堆区存放malloc等的变量;静态区存放全局变量,静态变量;
单个指针所占用的字节
在64位中每种类型占用8个字节,代码如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { printf("char=%d", sizeof(char*)); printf("int=%d", sizeof(int*)); printf("double=%d", sizeof(double*)); printf("float=%d", sizeof(float*)); return 0; }
在32位电脑桌每种类型占用4个字节(由于电脑是64位,不方便展示,但代码相同,想验证的小伙伴可以试试)
指针
我们可以建立一个指针,代码如下
#include <stdio.h> int main() { int a = 0; int* p = &a; printf("*p=%d", *p); printf("a=%d", a); return 0; }
运行结果如下:
进入调试我们可以对a进行取地址
此时a的地址为0x0000006B362FF534
我们再*p的地址p
地址为 0x0000006B362FF534
指针在数组的使用
代码如下
对于数组的地址,arr便是数组的首地址,&arr[0],p,都是数组的首地址,故我们可以得到arr=p=&arr[0];故我们可以得到:
需要代码可以查看https://gitee.com/steventom/class/commit/75370c39090ae5d7b43259fb021a51570d53d4ff
希望各位一键三连