社区
C++ 语言
帖子详情
指针和普通变量有什么区别?
科比布莱恩特
2012-08-02 10:38:09
指针和普通变量有什么区别?为什么要使用指针?性能上有什么优点?
比如:int *p 和 int p有什么区别?
比如我在传参时使用&p与p有什么区别?
...全文
1374
17
打赏
收藏
指针和普通变量有什么区别?
指针和普通变量有什么区别?为什么要使用指针?性能上有什么优点? 比如:int *p 和 int p有什么区别? 比如我在传参时使用&p与p有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chenxizx
2012-10-23
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
1+2这个表达式永远得值3
a+b这个表达式只依赖于a,b的值-----按名字访问称为直接访问
*p + *q 这个表达式的值随着p,q指向的变量不同而不同----按指针访问称为间接访问
直接代表简单----用枪剌只能剌到对手的正面
间接代表灵活----用三截棍却能打到对手的背面
[/Quote]
这个回答太妙了
OldCloudM
2012-08-05
打赏
举报
回复
1
本质是一样的,都是存值,但是方式有点区别:指针的值存的是地址值(以支持“间接访问”机制),而普通变量的值存的是实际值。
cao_julians
2012-08-02
打赏
举报
回复
1+2这个表达式永远得值3
a+b这个表达式只依赖于a,b的值-----按名字访问称为直接访问
*p + *q 这个表达式的值随着p,q指向的变量不同而不同----按指针访问称为间接访问
直接代表简单----用枪剌只能剌到对手的正面
间接代表灵活----用三截棍却能打到对手的背面
惟愿莲心不染尘
2012-08-02
打赏
举报
回复
就像别人问你家住哪,你给他写张地址条(指针)和带他到你家门口看(变量)一个道理……
cao_julians
2012-08-02
打赏
举报
回复
指针和普通变量的区别,最简单的思考应该按整数的两个不同用法着眼:
整数可以表示序号和数量----数量的概念不必说了,但序号的概念人人都懂但不透彻。
2012表示年----这是序号,它的下一年是2013,即2012+1可得2013,但这里的1是什么?是公元1年吗----是序号还是数量?
2012是今年,2013是明年,两者能相加吗?序号+序号是什么?
指针是什么?指针是严格意义上的序号----存储位置的编号!
所以指针+数量为指针----成立
反之指针-指针为数量----成立
指针+指针------不成立
C和C++中源代码级对存储数据的访问有两种方法:按名字和按指针----就象在大街上按名字(类似变量名)或按门牌号(类似地址)访问商店一样。
酱油党
2012-08-02
打赏
举报
回复
区别大了,在java中只能用数组的形式体现输入输出的概念
在C中可以有指针
在C++中可以有指针和引用
而且在函数调用过程中指针的好处传递的是地址,只在函数堆栈中占用了四个字节,如果是结构体直接传入,
天知道是多少
而引用,你可以把它当成别名,虽然函数堆栈的开销存在,但是木有数据拷贝的开销
当然要是在PC上简单应用以上的意义不大
baichi4141
2012-08-02
打赏
举报
回复
指针内保存的是内存地址
指针有类型,对指针进行解引用操作可以将指针内的内存地址的二进制数据作为指针对应的类型来操作
本质上就是这么简单
Xomic
2012-08-02
打赏
举报
回复
你都 四个 裤衩了,还问这么低级的问题啊!你的裤衩哪来的?我不解...
MC_LoveX
2012-08-02
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
本质没什么区别…… 值传递和指针传递本质都是值传递
[/Quote]
+1
wshn13
2012-08-02
打赏
举报
回复
本质没什么区别…… 值传递和指针传递本质都是值传递
赵4老师
2012-08-02
打赏
举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
提醒:
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
free13142006
2012-08-02
打赏
举报
回复
指针与数组的关系密不可分的,它可以指向数据的首地址,从而操作每个数组的元素。而它本身在win32系统上只占用四个字节。而且它可以直接对内存进行操作,效率较高。而很多变量,占用内存空间多,而且变量大多数时候不能直接对应内存地址,效率较慢。
cbzjzsb123
2012-08-02
打赏
举报
回复
区别不大,主要区别在于指针变量本身都是占四个字节的内存,指针变量内存放到是指向的内存单元的地址,是unsigned int 类型的,而普通变量存放的是数据,根据不同的类型存放不同的数据。
自信男孩
2012-08-02
打赏
举报
回复
区别不大,主要区别在于指针变量本身都是占四个字节的内存,指针变量内存放到是指向的内存单元的地址,是unsigned int 类型的,而普通变量存放的是数据,根据不同的类型存放不同的数据。
zhai__chi
2012-08-02
打赏
举报
回复
主要是实现方式不同,效率不同
DBFNO
2012-08-02
打赏
举报
回复
1、传递参数时:对于指针,&p传递的是指针的地址
p传递的是指针所指的变量的地址,也就是变量的地址。
2、int *p 和 int p有什么区别
int p和int *p在为函数传参时,对于int p,只传递它的副本,在函数内部改变p的值不能改变
p在函数外面的值。
而对于*p,可以通过*p=X,来改变它之前所指元素的值,函数外边的值也改变。
例如 int *p,a=4; p = &a; fn(p){*p = 5;} 则调用函数后,a=5。
小小水滴
2012-08-02
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
1+2这个表达式永远得值3
a+b这个表达式只依赖于a,b的值-----按名字访问称为直接访问
*p + *q 这个表达式的值随着p,q指向的变量不同而不同----按指针访问称为间接访问
直接代表简单----用枪剌只能剌到对手的正面
间接代表灵活----用三截棍却能打到对手的背面
[/Quote]
没什么本质区别,只是类型问题,有的地方需要传递指针,有时需要传递变量,都是值传递,视情况而定
C/C++
指针
经典资料大全
C/C++
指针
经典资料大全,十余部经典资料书籍,是您精通C
指针
的理想教程。
最全的C和C++语言笔试面试题汇总
最全的C和C++语言笔试面试题汇总,我大四时候找工作时候他帮上了很多忙,里面的题目经常考到。希望对大家有帮助。
指针
变量
与
普通
变量
的
区别
一、
普通
变量
和的本质
区别
在说到
普通
变量
和
指针
变量
的
区别
时,我更喜欢从一个更高的视角去看待这两者。首先来说,这两者都是
变量
,既然是
变量
,就会包含地址和值这两部分,例如int a , 用&a获得该
变量
的地址,用a获得该
变量
的值;
普通
变量
和
指针
变量
的
区别
就是,这两种
变量
的值的所表示的意义不同, 一般来说,
普通
变量
的值,只是供程序员所使用的值,而
指针
变量
的值则不同,它的值存放的是其他
变量
的地址。...
c语言中为了
区别
一般的
变量
,c语言
指针
变量
和
普通
变量
的
区别
满意答案haha37802017.03.07采纳率:54%等级:13已帮助:9058人
指针
和
普通
变量
的
区别
,最简单的思考应该按整数的两个不同用法着眼:整数可以表示序号和数量----数量的概念不必说了,但序号的概念人人都懂但不透彻。2012表示年----这是序号,它的下一年是2013,即2012+1可得2013,但这里的1是什么?是公元1年吗----是序号还是数量?2012是今年,2013是...
C |
指针
篇之(
普通
变量
和
指针
变量
)
1. 什么是
指针
?
指针
就是地址,地址就是
指针
(&取地址符); 地址就是内存单元的编号; 2.
指针
和
指针
变量
的关系?
指针
变量
是存放地址的
变量
;
指针
和
指针
变量
是两个不同的概念,但是要注意,我们在叙述时会把
指针
变量
简称为
指针
; # include<stdio.h> int main(void) { int * p; //p是
变量
名字,*表示存储的是int类型
变量
的地址 int i = 3; p = &i;//ok /* p保存了i的地址,因此p指向i; p不是i,
C++ 语言
65,179
社区成员
250,527
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章