社区
C++ 语言
帖子详情
又被指针卡住了
cray_swallow
2007-04-16 11:51:19
程序如下:
#include <stdio.h>
main()
{
char a,*pa;
a=10;
pa=&a;
*pa=20;
printf( “%d”, a);
}
这里先给比我更新的手一点小技巧:pa=&a读作:这是返回a变量的地址编号.而*pa读作:pa内容所指的地址的内容.这样有助于理解指针的含义。
我的问题是:
1.这道题目输出应该是20,但是先前定义的a=10又有什么用呢?
2.a=10;对结果会有什么影响?
3.如何才能使a=10对结果产生影响。
...全文
301
16
打赏
收藏
又被指针卡住了
程序如下: #include main() { char a,*pa; a=10; pa=&a; *pa=20; printf( “%d”, a); } 这里先给比我更新的手一点小技巧:pa=&a读作:这是返回a变量的地址编号.而*pa读作:pa内容所指的地址的内容.这样有助于理解指针的含义。 我的问题是: 1.这道题目输出应该是20,但是先前定义的a=10又有什么用呢? 2.a=10;对结果会有什么影响? 3.如何才能使a=10对结果产生影响。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cray_swallow
2007-04-16
打赏
举报
回复
嗯,谢谢大家的回答。
开始我也发现a=10是迷惑用的
但是,a=10如果说是初始化的话,真的是必需的吗?
WinWing
2007-04-16
打赏
举报
回复
1.这道题目输出应该是20,但是先前定义的a=10又有什么用呢?
练习题,用来迷惑你的.
2.a=10;对结果会有什么影响?
没有
3.如何才能使a=10对结果产生影响。
这个...
loongee
2007-04-16
打赏
举报
回复
嗯,如果是考试题的话a=10就有意义了。
老师专门来迷惑你的。
guanwl
2007-04-16
打赏
举报
回复
楼上已经把问题说清楚了. 我是来接分的.
ayw215
2007-04-16
打赏
举报
回复
1.这道题目输出应该是20,但是先前定义的a=10又有什么用呢?
初始化
2.a=10;对结果会有什么影响?
没影响,因为你后面用指针把a滴知改变了
3.如何才能使a=10对结果产生影响。
除非你把a=10放到printf滴前面
freshui
2007-04-16
打赏
举报
回复
要是a=10对结果影响
*pa+=20;
这样输出为30
freshui
2007-04-16
打赏
举报
回复
a=10
在你这道题是多余的
只要char a即可
给a分配内存
cray_swallow
2007-04-16
打赏
举报
回复
我太爱你们了~~~
有朝一日我成为高手也会学习你们这种乐于助人的精神。
我知道,大家上这里,除了聊天解闷,还有就是帮助新人以正确的道路和思想成长,而不仅仅是为了这点分数,试想,能回答这种问题的人,无论收入还是生活水平也不会低的。尤其是程序设计方面,基础一定要打好,还有就是思路要正确。
再次感谢大家的帮助
三中土豆
2007-04-16
打赏
举报
回复
不是重复定义,是重新赋值!
楼上正解!
cray_swallow
2007-04-16
打赏
举报
回复
谢谢ayw215() ,WinWingxxc028() ,尤其是wltg2001(红猪)你的这段话,算是听君一席言,胜读十年书了。恍然大悟!结贴结贴
0黄瓜0
2007-04-16
打赏
举报
回复
等于重新定义了一个a=20
===================
这句话以前的理解都是正确.但看了这句,你的理解是错误的.
char a;//这里是变量定义,也就是编译器会给一个存放char型变量的空间.
char *pa;//这里也会有一个存放char型指针的空间.
a=10; //在a代表的空间放入10
pa=&a;//在pa代表的空间放入a的地址.
*pa=20; //在pa指向的地方也就是a代表的空间放入20
printf( “%d”, a);
而重复定义是又定义一个以a代表的空间.
如又来个
int a;
或;char a;
double a;
wltg2001
2007-04-16
打赏
举报
回复
再次定义*pa=20就是覆盖了a地址上面的数据了,等于重新定义了一个a=20.是这样理解的吗?
不是定义,而是将a地址上面的内容修改成了20,所以不会产生得复定义。
另外,这个例子中,a=10;这一句虽然对一道题目来说是没有影响的,但是对于一个编程者而言是有必要加的,并不是楼上所说的什么迷惑,编程并不是应试教育,不存在这种迷惑考生这种现象,这里a=10,是对a的初如化,虽然char a;这一句已经分配了a的地址,但是如果不初始化的话,a的内容是随机的。所以应该初始化,这是一种良好的编程习惯。
cray_swallow
2007-04-16
打赏
举报
回复
但是我的理解是:a地址上的数据为10,pa=&a表示pa取了a的地址,而*pa就是表示地址为a的地址上的数据。从内存上来讲,a的地址已经有了数据为10,指针pa指向了a的地址,那也应该为10,再次定义*pa=20就是覆盖了a地址上面的数据了,等于重新定义了一个a=20.是这样理解的吗?而且这里是一个char形的a,不会产生重复定义马?
0黄瓜0
2007-04-16
打赏
举报
回复
2.a=10;对结果会有什么影响?
逻辑上告诉你,本来我的a=10,但我通过指针把它修改为a=20.
xxc028
2007-04-16
打赏
举报
回复
a=10如果说是初始化的话,真的是必需的吗?
我的个人理解如下:
就你这道程序而已,真的没有必要;但有时候还是有用的
char a;
如果你声明后,没有给它赋值 ,那a的值将不确定,这意味这该变量的值是它被创建前该内存单元的值。
zzyjsjcom
2007-04-16
打赏
举报
回复
a = 10 是必要的 假如没*pa=20;这条语句呢?
PAT甲级1112 Stucked Keyboard:[C++题解]
卡住
的键盘、双
指针
、去重
本文介绍了如何使用双
指针
算法解决PAT甲级1112题中的问题,通过统计连续字符出现的次数,标记非
卡住
字母,并输出坏字符,同时统计正常字符串。代码展示了如何利用C++实现该算法。
QT creator 调试箭头消失、QT 调试
指针
消失 、调试
指针
卡住
不见了
在使用QTcreator进行单步调试时,遇到调试箭头突然消失的问题,即便尝试多种解决办法,包括重启项目和重新构建,问题依旧存在。最终,通过切换到Visual Studio进行调试,该问题得以避免。
linux
指针
长期不动会
卡住
,rsync,文件同步_rsync 同步文件时
卡住
不动,rsync,文件同步,linux - phpStudy...
博主使用rsync往服务器同步文件,设置超时或不设置都会出现问题。运行约1小时后,不断出现timeout错误提示,10多个后程序卡在rsync上,CPU很高。还给出了server端log和客户端错误提示,询问问题原因。
欧姆表
指针
偏转过小_LZ-65金属管浮子流量计
指针
卡住
的原因分析
本文介绍了LZ-65金属管浮子流量计
指针
不动的原因及解决办法,包括浮子卡死、介质压力不足和量程选择不当等问题。
Qt调试技巧之如何在多线程下判断某个线程是否
卡住
,以及执行函数。
本文介绍了在Qt多线程环境下,如何通过打印对象
指针
或设置断点来判断线程是否
卡住
,并定位导致阻塞的具体函数位置,帮助开发者快速诊断线程执行问题。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章