问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

指针的赋值问题

发布网友 发布时间:2022-05-11 17:18

我来回答

5个回答

热心网友 时间:2023-10-16 02:07

指针是个存着地址的变量,因为我们每定义一个变量,内存就会给他分配空间,那么每个变量必须会有一个存储他的地方,我们称为地址,他指向谁,里面就存着谁的地址。如题*p=a;
此时p里面存的是a的地址(记住这一点),还可以用取地址符&获取变量的地址,如&a;表示的是a的地址。变量的值可以用*号获取。* 后面加一个地址,表示这个地址里面的数值(也记住,很重要)

定义3个原则
A * 后面只能跟地址, *p 表示参数的值
B &后面只能跟变量。 &a 表示参数a的地址
C ’=‘ 是赋值,为了程序的稳定,我们默认只允许同类型的参数进行赋值(若不同类也会赋值,但是执行结果会出错)
就是说,只允许,指针地址赋值给指针地址,变量值赋值给变量值。了解这些,就可以分析了:
int *p,*q; q=p; //对的,因为p,q都是指针,可以相互赋值 依据 A,C原则
int a,*p,*q; p=q=&a;//对的,p,q指针表示地址,根据B原则,&a也是地址,因此可以进行赋值
int a,*p,*q; q=&a; p=*q;//错的,q =&a 是对的,但是p =*q 是错的,根据原则A,C,*q是值,p是地址,与原则C冲突
int a=20,*p; *p=a;// 对的,他们都表示值
int a=b=0,*p; p=&a; b=*p;//对的,p = &a 原则BC ,b = *p 原则AC
int a=20,*p,*q=&a; *p=*q;// 对的,初始时q得到a的地址,*p和*q都是表示值,符合原则C
int a=20,*p,*q=&a; p=q;//对的,原则BC
int p,*q; q=&p;// 对的,原则BC

祝你进步,指针自己琢磨下,会明白的!

热心网友 时间:2023-10-16 02:08

首先指针最好不要做赋值运算,int *p,*q; q=p;p是一个地址就是把p的地址赋给指针p,两个值都是16进制数,但是这样做的话两个指针指的是同一个地址并且没有被在其地址位之内放int型的整数;
int a,*p,*q; p=q=&a;是在上面的基础上对其地址位置的内存放置了一个a(,但是这个数是多少是,是垃圾数据);
int a,*p,*q; q=&a; p=*q;在指针q和指针p所指位置上的内存中放置的是同一个a(int数,随机的)*与&是逆运算,假如p是指针,*p代表的就是p所指内存中储存的数,a代表一个int型的数,那么&a代表的就是这个数所指的地址值;p等价&(*p);
int a=20,*p; *p=a;*p在这里代表的是一个间接变量,你可以吧*p当成一个变量,这个变量比普通变量好用……
int a=b=0,*p; p=&a; b=*p;同上的道理,对于=号是从右往左运算的所以b=*p并不知道*p的值,*p的值是随机的;
int a=20,*p,*q=&a; *p=*q;这个玩的是具体的int型值,对于p和q所指的地址并不做任何操作,都是随机的地址;
int a=20,*p,*q=&a; p=q;同上面不一样的是p与q指向了同一个地址,实际上是把q指向的地址赋给了p;
int p,*q; q=&p;这个就不用说了吧。
加上一句,虽然*p很好用,但是开始时由于其指向不明确,是随机地址,滥用的话会造成内存管理混乱,建议在用指针前最好用malloc和new函数开辟动态内存。

*

热心网友 时间:2023-10-16 02:08

int *p,*q; q=p;
int a,*p,*q; p=q=&a;
(上面的赋值是正确的)

int a,*p,*q; q=&a; p=*q;
int a=20,*p; *p=a;
(p=*q不对,应该是p=q,*p=a;不对,p根本没有指向任何位置。)

int a=b=0,*p; p=&a; b=*p;
int a=20,*p,*q=&a; *p=*q;
(a=b=0这种初始化方式不对,*p=*q不对,p根本没有指向任何位置)

int a=20,*p,*q=&a; p=q;
int p,*q; q=&p;
(这组也是正确的)

热心网友 时间:2023-10-16 02:09

int *p,*q; q=p; //指针赋值给指针允许
int a,*p,*q; p=q=&a; //&a错误,指针只需要变量a的首地址,故应该写成p=q=a
int a,*p,*q; q=&a; p=*q; //&a错误同上条 p=*q错误 不同类型赋值
int a=20,*p; *p=a; //*p=a错误,应该是p=a. 非法给多重指针赋值
int a=b=0,*p; p=&a; b=*p; //&a错误,b末定义
int a=20,*p,*q=&a; *p=*q; // *q=&a错误
int a=20,*p,*q=&a; p=q; //*q=&a错误
int p,*q; q=&p; //q=&p错误,同第二条

热心网友 时间:2023-10-16 02:10

请分清“指针本身的值”和“指针指向的地址中的值”这两者的区别。指针本身的值就是地址。

int a = 2;
int *p = &a;
//p = 100; //试图将指针本身的值修改为100,即令指针p指向内存地址100的位置,这是未定义行为
*p = 100; //将指针p指向的地址中的值修改为100,即将a的值修改为100

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win10电脑hdmiwin10笔记本hdmi连接电视没反应 平板电脑与电视机联接华为平板怎么投屏到电视上 长虹chiq电脑无线投影如何无线把电脑屏幕投影到电视屏幕上 模拟电视电脑系统智能电视怎么变成电脑系统 ops电脑加装固态硬盘ops电脑是什么意思 我想问一下立宇泰电子的ARMSYS6410开发板可以外接什么模块? 小心那些处理过的2元绿幽灵,教你这几招就能识别! 如何辨别人民币是否水洗过,刚有兴趣做收藏可去买第四套人民币还有是否水... oppor7splus手机怎么样现在?照相好不好。是多会儿出来的机子呢。目前... ps怎么改像素大小且不模糊 指针赋值语句 在藏宝阁卖号怎么降价? 梦幻藏宝阁卖号和卖金币是怎么收费的? 肺条索灶是什么意思? 梦幻藏宝阁怎么卖号的钱怎么计算的 肌肉条索状是什么意思 条索纤纤什么意思? 电影被偷走的那五年何曼哭着接谢宇打电话时的插曲叫什么名字? 被偷走的那五年哪里可以观看? 电影被偷走的那五年中的脑科医生是谁演的 《被偷走的那五年》什么时候上映?好看吗?剧情介绍? 被偷走的那五年男演员叫什么 被偷走的那五年的介绍 被偷走的那五年演员列表_被偷走的那五年高清网盘在线完整观看 农行购买凭证式国债,可以跨省支取或者挂失吗? 被偷走的那五年里医生的扮演者 《被偷走的那五年》演员都有谁? 在农行网上银行上买的电子储蓄国债能在外省办理提前支取业务嘛吗 在北京买贵行发行的电子国债一年半了,3年息,现在等用能在异地提前支取吗? 如何使用https与服务器通信 C语言指针的赋值问题 C语言指针赋值? c语言指针赋值 关于c语言指针变量的赋值 c语言指针赋值问题 C语言程序设计指针变量赋值? 关于C语言中指针赋值的问题 c语言的指针赋值问题 C语言指针赋值的问题(关于数组的赋值) 手机为什么总是跳出一些app下载?怎么解决这个问题?本手机为荣耀6X 打开app时跳出不受信任的开发者怎么办 心疼!8小时都不换卫生巾,这些女护士到底有多辛酸? 内蒙古女护士积雪中跳窗爬行100米上班,你如何看待女护士这一行为? 广东一位被跟踪两年后女*首次发声,你认为这位女*该如何保护自己? 当年健身10年的女*,被称为“女版巨石强森”,如今怎么样了? 我想做早餐快递上门服务不知道可不可以 老家肉饼的早餐可以送快递吗 早餐快递 快递分拣点旁边开早餐店可以吗 开快递站和开早餐店哪个赚钱多,哪个轻松一些?