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