c语言九(1) 指针

指针

/初探指针

1.内存

​ 计算机中的最小单位是 bit位

最小的存储单位为byte 字节(一个字节=8位)

​ 运行的软件,游戏,程序都是在内存中

​ 一个正在运行的程序我们称之为进程

2.变量

​ 2.1定义变量

​ 类型名 变量名

​ 2.2引用

​ 使用变量名就是在使用变量名绑定的内存段

3.地址与首地址

​ 地址:在计算机中每一个字节都有一个与之相匹配的编号

​ 首地址:变量的第一个地址就是首地址

4.指针:首地址就是指针

​ 在内存中我们的地址是连续的,所以意味着知道了变量的首地址和类型,就可以确定对应内存的值,所以我们把首地址称之为指针.

5.指针变量

​ 如果我们再次的开辟内存,用来保存指针,我们就把这个开辟的内存绑定的变量称之为指针变量.

6.指针大小

​ 操作系统和编译器 操作系统决定上线

​ 编译器决定了你当前所用的环境

​ 32个0 最大32个1 0-32个1

​ 64个0 最大64个1 0-64个1

​ 编译器环境有关: 4字节32(x86) 8字节64位(x64)

printf("int *=%d\n",sizeof(int *));

7.解引用

​ 知道变量名p,就知道p绑定的内存段中保存的地址&x,就能够去操作&x指向的内存段

int x =10086;
int *p=&x;     //这里的*号和int组成的意思是: 一个int类型的指针,而名字为p
*p=100;				//这里的*号则为解引用,利用名字p去操作关于p所表达的内存段中
					//保存的地址&x所指向的内存段
printf("%d\n",x);

8.野指针

​ 指针指向未知的内存段,我们把这样的指针称之为野指针.

int *p=10086;
*p=100;  //2.因为没有修改的权利
printf("%d",*p);  //3.若强行运行,输出结果空白
//1.ctrl+f5运行失败....这是野指针

9.空指针

int *p=NULL;NULL/0/空
//空指针的作用主要是:程序员代码敲得多,可能导致某指针不经意间废了,导致内存泄漏
int x=10086;
int *p=NULL;
p=&x;
if(NULL!=p)
{
    *p=100;
}
else
{
    printf("这是一个空指针!\n");
    return 0;
}
printf("%d\n",*p);

10.万能指针

​ void* 定义的指针变量,就是我们常说的所谓的万能指针

11.多级指针

int x=10086;
int *p=&x;			//p是x变量的首地址
					//*p表示x变量对应的值

int **p1=&p;		//p1是p指针的首地址
					//*p1是x变量的首地址
					//**p表示x变量对应的值

int ***p2=&p1;		//p2是p1指针的首地址
					//*p2是p指针的首地址
					//**p2是x变量的首地址
					//***p2表示x变量对应的值
printf("x=%d\n",x);
printf("&x=%d\n",&x);
printf("p=%d\n",p);
printf("*p=%d\n",*p);
printf("p1=%d\n",p1);
printf("*p1=%d\n",*p1);
printf("**p1=%d\n",*p1);
printf("p2=%d\n",p2);
printf("*p2=%d\n",*p2);
printf("**p2=%d\n",**p2);
printf("***p2=%d\n",***p2);

12.指针的骚操作

posted @ 2022-10-13 14:50  追梦的那些孩子  阅读(14)  评论(0)    收藏  举报