社区
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对结果产生影响。
...全文
263
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;这条语句呢?
精通C语言
指针
指针
被誉为C语言的精髓、C本质上是加了一层语法糖的汇编,引进当时先进的函数,保留了汇编强大的地址直接访问功能 ——
指针
,使其高效灵活。本课程是黄强老师对于
指针
的一次专题讲解,相信能给大家带来收获!
QT creator 调试箭头消失、QT 调试
指针
消失 、调试
指针
卡住
不见了
在使用QTcreator 编写程序时,按下F10进入单步调试模式,单步执行几行代码后,在某一行代码处调试箭头突然消失,调试箭头
卡住
,不见了,不知道执行到哪里了,再按下F10、F5都没有用,重新调试还是这样,重启项目、...
计算机鼠标显示停顿原因,经常遇到鼠标
指针
停顿卡的解决方法
经常遇到鼠标
指针
停顿卡怎么办呢,通过鼠标卡顿事件,透析各种可能问题,触类旁通了解电脑维护。下面就由学习啦小编来给大家说说经常遇到鼠标
指针
停顿卡的解决方法,欢迎大家前来阅读!经常遇到鼠标
指针
停顿卡的解决...
c语言
指针
数组分配内存,
指针
数组&数组
指针
的分配内存及函数参数 C语言版
最近写代码总是被基础知识
卡住
,十分耽误时间,今天又
卡住
了。所以下定决心一定要弄清楚这个问题,然后不好的是网上的资料总是解决的并不清楚,总是在纠结什么是
指针
数组什么是数组
指针
,看了《C缺陷和陷阱》也没有...
快慢
指针
(java)
但是又有很多中情况需要讨论,所以我们所需要做的是不断的练习,否则一旦在面试中
卡住
就是几个小时,很不爽 一、快慢
指针
是什么? 就是用两个
指针
遍历数组,一个
指针
一次走两步叫快
指针
,一个
指针
一次走一步,叫做...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章