社区
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对结果产生影响。
...全文
269
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
作业
写回复
配置赞助广告
用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;这条语句呢?
QT creator 调试箭头消失、QT 调试
指针
消失 、调试
指针
卡住
不见了
在使用QTcreator 编写程序时,按下F10进入单步调试模式,单步执行几行代码后,在某一行代码处调试箭头突然消失,调试箭头
卡住
,不见了,不知道执行到哪里了,再按下F10、F5都没有用,重新调试还是这样,重启项目、...
c语言
指针
数组分配内存,
指针
数组&数组
指针
的分配内存及函数参数 C语言版
最近写代码总是被基础知识
卡住
,十分耽误时间,今天又
卡住
了。所以下定决心一定要弄清楚这个问题,然后不好的是网上的资料总是解决的并不清楚,总是在纠结什么是
指针
数组什么是数组
指针
,看了《C缺陷和陷阱》也没有...
快慢
指针
(java)
但是又有很多中情况需要讨论,所以我们所需要做的是不断的练习,否则一旦在面试中
卡住
就是几个小时,很不爽 一、快慢
指针
是什么? 就是用两个
指针
遍历数组,一个
指针
一次走两步叫快
指针
,一个
指针
一次走一步,叫做...
指针
数组&数组
指针
的分配内存及函数参数 C语言版
最近写代码总是被基础知识
卡住
,十分耽误时间,今天又
卡住
了。所以下定决心一定要弄清楚这个问题,然后不好的是网上的资料总是解决的并不清楚,总是在纠结什么是
指针
数组什么是数组
指针
,看了《C缺陷和陷阱》也没有...
C语言
指针
--一级
指针
C语言有一个最重要的知识,是很多小白容易
卡住
并放弃的一个知识,并且是衡量一个C/C++程序员是否优秀的指标,那就是
指针
。
指针
是C语言的核心,大家需要好好的学习。本章内容是带领大家走进
指针
这个类型,希望大家...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章