C语言指针/引用/取值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言指针/引用/取值相关的知识,希望对你有一定的参考价值。

参考技术A 指针是一个存储计算机内存地址的变量。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。

根据出现的位置不同,操作符  *  既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,*表示这里声明了一个指针。其它情况用到*表示指针的取值。

&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到该变量的内存地址。

// 声明一个int指针

int*ptr;

// 声明一个int值

int  val = 1;

// 为指针分配一个int值的引用

ptr = &val;

// 对指针进行取值,打印存储在指针地址中的内容

int deref = *ptr;

printf("%d\n", deref);

第2行,我们通过*操作符声明了一个int指针。接着我们声明了一个int变量并赋值为1。然后我们用int变量的地址初始化我们的int指针。接下来对int指针取值,用变量的内存地址初始化int指针。最终,我们打印输出变量值,内容为1。

第6行的&val是一个引用。在val变量声明并初始化内存之后,通过在变量名之前使用地址操作符&我们可以直接引用变量的内存地址。

第8行,我们再一次使用*操作符来对该指针取值,可直接获得指针指向的内存地址中的数据。由于指针声明的类型是int,所以取到的值是指针指向的内存地址存储的int值。

说穿了,指针就是地址吧,这里可以把指针、引用和值的关系类比为信封、邮箱地址和房子。一个指针就好像是一个信封,我们可以在上面填写邮寄地址。一个引用(地址)就像是一个邮件地址,它是实际的地址。取值就像是地址对应的房子。我们可以把信封上的地址擦掉,写上另外一个我们想要的地址,但这个行为对房子没有任何影响。

以上是关于C语言指针/引用/取值的主要内容,如果未能解决你的问题,请参考以下文章

c语言:指针与字符串?

C语言指针 ptr,*ptr,&ptr的含义?

用C语言去取一个给定地址里的值

C语言里,啥时候用数组啥时候用指针和动态内存(malloc/calloc)?

C语言指针进阶(下)

请教c语言中打印变量的大小被警告是为啥(VS2019/Debug/x64)?