C语言指针变量与普通变量

Posted 流浪孤儿

tags:

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

前言

想必在萌新的世界里必然会出现这样的一幕:当几人畅聊时突然有人说起了编程世界的恐怖的存在->指针,然后众人闻之色变,然后仰天长叹......

回到这里让我们一探指针的风采吧!

首先来个指针的概念

指针即某一个变量单元的地址,存放地址的变量称为指针变量,通过解引用该指针变量就可以访问该地址对应的变量单元

地址就好比一个房间号,通过房间号就可以确定你(变量)住在哪里,如果你需要帮助,那么他们就可以通过地址找到你从而提供帮助(即对该变量进行访问)

因此只要你提供给他们地址,他们就能为你服务

指针变量存储地址

地址是一个数,将地址打印一下

 

  其中%p是将地址以十六进制的形式打印出来,&是取地址运算符,&a将a的地址取出来

可见地址也就是一个带有类型的数而已

提示:地址是一个数,它的类型是type*(type可以是int,float,double....,这取决于地址所对应的变量是什么类型的)​​​​​​​

指针变量只能存放地址,不要把一个整数赋给指针变量,编译器会对这种行为报警

使用普通变量存储地址:

注意:每次运行程序编译器会给变量随机分配地址,因此每次运行时a的地址会不同

 此时pa存储了a的地址,但是没有意义,你无法通过pa去找到这个变量a,你把地址给了普通变量,但是普通变量无法提供“上门服务”

使用普通变量存储地址这种行为是非法的,编译器会发出警告

 因为a的类型是int,所以&a的类型是int*,将&a赋给int类型的变量p,编译器会进行算术转换将&a拷贝后得到一个int类型的临时变量,然后再将临时变量赋给变量p

使用指针变量存储地址

 说明:

定义了一个指针变量pa,pa的类型是int *,就好比a的类型是int,

当你将你的地址给了指针变量pa之后,如果需要帮助,那么pa就可以通过你给它的地址找到你

指针变量的访问功能(解引用)

 指针变量pa存储了变量a的地址,通过解引用便能找到a,

解引用:

*指针变量

其实*pa就是a,看一下*pa与a的地址就清楚了

 可见*pa就是a

指针变量与普通变量的比较

普通变量a存储的是3,因此a==3

指针变量存储的是地址,因此pa==&a

而*pa==a;

当指针变量存储了某一个变量的地址,那么就说这个指针变量指向了该变量。

这里的指向是一种抽象的概念

指针变量就介绍到这里了,若有错误之处还请敬请指正,吾必虚心学习!

以上是关于C语言指针变量与普通变量的主要内容,如果未能解决你的问题,请参考以下文章

C语言篇No2指针变量

C 语言指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )

C语言指针学习(转载)

C语言---指针变量详解1

C语言 怎样让一个指针的内容传给一个变量

有关C语言指针的问题:为啥最后结果是空指针?