前言
一直以来,对指针也只是有个模糊的理解,记录一下让你我更清晰
一、数据类型
数据类型的本质作用:合理的利用内存空间来存储数据
char ch;
printf("sizeof(char)=%d\n",sizeof(ch));//char占一个字节
int num;
printf("sizeof(int)=%d\n",sizeof(int));//int占四个字节
内存管理
将内存抽象为一个很大的一维字符数组,对内存的每一个字节分配一个32位或64位的编号(与处理器相关),这个编号就是内存地址
二、指针变量
用来存放内存地址的变量
int num=100;
printf("sizeof(int)=%d\n",sizeof(int));//四个字节
printf("%p\n",&num);
int *p;//定义的时候*说明p是指针变量而不是普通变量
p=#
printf("num=%d\n",num);//100
printf("*p=%d\n",*p);//100
指针变量自身的类型:将变量名去掉
指向的类型:将变量名和离它最近的*去掉,作用是可以决定指针变量所取内存空间的宽度,决定了指针变量+1跳过的单位跨度
//指针变量的跨度
printf("&num=%u\n",&num);
printf("p=%u\n",p);
printf("p+1=%u\n",p+1);
//Linux/Windows系统倒序存放数据
int num = 0x01020304;
int *p = #
printf("*p = %#x\n",*p);//%#x是带格式输出, 效果为在输出前加0x
short *p1 = #//两个字节
printf("*p1 = %#x\n",*p1);
char *p2 = #
printf("*p2 = %#x\n",*p2);