大一C语言学习笔记(7)---指针篇--什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?

“指针是C语言的灵魂”这句话一开始我没怎么明白,现在接触了指针,终于知道为什么这么说了,因为。。。。难,真难;下面说一下我对这句话的见解:

 

C语言拥有着其他语言所没有的特性---直接访问内存空间,并进行操作,与这个功能对应的工具便是指针。博主刚开始用 DEV-C++ 那段时间嘛,就有时候写着写着系统提醒我有病毒,而且每次都是我用 Dev-C++ 的时候,我就纳闷了,我这用的好好的,怎么会是病毒软件呢?现在我大概明白了,指针会直接操作内存空间嘛,而可以随意进出一台电脑的内存空间,是什么东西?病毒呗!那身为一个小菜鸡,我怎么会那么早就用到指针呢,你还真别说 ,scanf(“%d”,&a)“&”这小玩意你看像不像取地址符(手动狗头);总之C语言的指针既是高效的,又是危险的。我的电脑是这么对我自己敲的代码的:

我一口盐汽水喷死你,我自己写的东西,担心个锤子     (╯°□°)╯︵ ┻━┻


#什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?

 

  • 指针就是地址,而地址又是什么,举个栗子:一个酒店有很多个房间,每个房间上都有着不一样的房间号,而这些地址就类似于这些房间号;那么每个房间号又是多少位的呢?就32位操作系统而言,每个房间号也就是32位的,“32位”指的是二进制的32位,而1字节代表8位,所以1个地址就占4个字节,而对于 int a=1,尽管我们给变量赋值一位数这么小的数,他在内存单元中依旧是以 32位 储存的,1位数就1位数呗,前面补31个0不就完了;我们可以通过地址来精确地找到房间,这些房间就相当于内存单元,那什么又是内存单元?想要使用变量,就先要在内存中占用一块内存单元,然后才能向内存中储存不同的数据;

       举个栗子:  

    (&88)是地址;

    (&变量 a)也是地址

 

  • 指针变量不同于指针,指针只是地址罢了,而指针变量就是储存地址的一种变量,所以指针变量又叫做地址变量;它也像储存其他数据类型的变量一样,只不过储存的东西是地址;

       举个栗子:  

       int *qdouble *qchar *q,这些都是指针变量,只不过他们所指向的内存所储存的数据的类型不同罢了;

       在定义了 int *q;的前提下,q  就是指针变量;

 

  • 取地址符“&”的作用就像它的名字一样,它可以把变量的地址取出来,也可以把88这样的数字等在内存中占用的地址取出来;

       举个栗子:

#include<stdio.h>
int main()
{
	int a;
	a=88;
	printf("%d\n",&a);//这里的&就是把88的地址取出来,并以整型的形式输出
	a=99;
	printf("%d\n",&a);
	//从这里可以看出,我们虽然对 a 赋了不一样的值,但这并没有改变 a 地址
}

       运行结果:

6487580
6487580

--------------------------------
Process exited after 5.253 seconds with return value 8
请按任意键继续. . .

 

  • 指针运算符“*”的作用就是根据指针变量所提供的地址来找到“这个地址所对应的内存里放了什么东西”;所以说其实“*”“&”其实就像是两个方向恰好相反的指路牌:“*”是由地址变量指向什么东西,而“&”就是由什么东西指向指针变量;所以说“*”可以读作“地址指向XX”,“&”可以读作“XX的地址”

        辅助理解代码:

#include<stdio.h>
int main()
{
	int a;
	a=1;
	printf("%d\n",a);
	int *q;
	q=&a;
	// q 指向 a  
	printf("%d\n",*q);
	// *q 就相当于变量 a,所以输出1 
	*q=2;
	printf("%d\n",*q);
	//“*q=2”等价于“a=2”所以这里会输出2 
	printf("%d\n",a);
	//同理。这里也输出2 
	
} 

        运行结果:

1
1
2
2

--------------------------------
Process exited after 5.41 seconds with return value 2
请按任意键继续. . .

博主水平有限,若文章有错误或不当之处,请狠狠批评博主         (~ ̄(OO) ̄)ブ

posted @ 2021-10-30 23:04  猿头猿脑的王狗蛋  阅读(203)  评论(0)    收藏  举报
1