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

c语言关于地址的问题

发布网友 发布时间:2022-04-29 21:52

我来回答

6个回答

热心网友 时间:2022-06-23 18:00

看你纠结的,我就回答下吧,这道题考察的是函数参数传递机制:
1、在函数中的形参指针是传进来的指针的副本,也就是说x指向p,y指向q,因此改变x和y指向的内存地址并不会改变p和q指向的内存地址,因此p和q指向的内存地址中的值永远不会变。
2、返回y++和返回y是一样的,区别就是返回之后 这个副本地址y指向的内存地址单元加一,那么你试试返回++y,看看输出结果(原因同下面)
3、返回++x,就是返回了,x(p的副本地址)指向的地址+4。

热心网友 时间:2022-06-23 18:01

举个例子
int* p = 0x0000; //假设,这个地址等于这个
而p++ 相当于p+1,相当于指针p移动了4个字节,所以此时p = 0x0004;
为什么移动4个字节呢,因为,p是个指向整形的指针,所以当指针移动的时候,是按照4个字节移动的,p+2则移动8个字节
若char *p;则p是按照1一个字节移动
p+1.,移动1字节,p+2移动2个字节

回到你的程序,你这里想要在f函数++地址,但你传的是地址的值,若 想改变地址的值,则要传地址的地址,所以你函数执行后,p,q的地址不变,所以*p和*q不变
对于这个不理解的,建议去搜搜 按值传递和按址传递

ps:在32位机上,int是4字节追问我搜了,但是,还是不太懂。。。。
这个程序的目的是什么呢?在这个程序里,都有哪些量改变了?

追答这个程序的目的是,比较两个数值,将返回大的那个值得地址,
但return是讲地址++就不知道为什么了,可能是测试,可能是为了告诉你 按值传递和按址传递
的区别

热心网友 时间:2022-06-23 18:01

同学, 这儿问题我解释一下,有以下几个知识点
1,就像大家说的那样,y++是地址加1
2,你知道你的结果为什么说出2么,而且是永远输出2,
你应该知道这样的结果b = 3
c = b++,这个c的结果是3,这个和你的一样,你的地址是自加运算,而且是后置,所以,你的这句话是r=f(p,q); 相当于r=y ++,所以r得到的地址是y没有加加前的地址,因为y没有加之前,它的指向的值为2,所以,*r=2
3,因为我们定义的临时变量都分配在栈里面,而在main函数里,a=1,b=2,*p,*q,*r,这些 都是临时变量,而且,他们是在栈中(一块内存)从地址高的地方向地址低的地方分配(大端模式,和下端模式,以及编译器的规定有关),所以,你得到的*r是以前的值,
如果你改一下把y++改成++y
根据在栈中分配的特点*r的输出应该是前一个分配单元的值,是1,你可以试试
4,还有你的main函数中q的地址并没有改变,因为所有的参数,传递都是值得拷贝,不过有的书中说的地址传递是指的是地址的拷贝,这里是对q的地址的拷贝所以,你调用函数后,你的q的地址还是没有变化,在main函数中输出还是原值,

好了就说这么多,如果有什么问题,我们在讨论

热心网友 时间:2022-06-23 18:02

++就是y=y+1;
这里返回的不但是y的内容+4,而且把y的值改变了;
但这样编程没有意思
而且运行时,会报错,提示内存错误,该内存不能为“writen”
值++表示,i++表示i=i+1
地址加加表示这个指针变量指向下一个变量的地址
比如,int a[3] , *p=&a[0];
如果写p++;
表示p指向a[1],而不是指向a[0];
*p和*q没有改变;
因为没有写*y或*x的语句
我说完了,希望帮你

热心网友 时间:2022-06-23 18:02

if(*x<*y)
return y++;/*
这里没有对*x、*y也就是a、b进行操作,而是将b的地址返回给r
所以*p=a=1、*q=b=2、*r=*q=b=2

热心网友 时间:2022-06-23 18:03

地址++就是跳到下一个地址,比如 int *y; y++就是跳到下一个整型数的地址,即 y 的值加一个整型数的长度(sizeof(int))。追问如果*y=4,*y++,(*y)++和y++得数是一样的咯?

追答不一样的。
*y++; 取y指向的内存里的值,然后y++
(*y)++ 将 y 指向的内存里的值加一
y++ y本身加一,它原来指向的内存里的值没变,y 指向新的内存单元

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 工行消费反刷卡金返现30元怎么用? C语言里面的指针和地址有什么区别??? C语言中的 指针 和 地址的关系? oracle中怎样查询表中最近两周内的数据 农业银行转账和刷卡的手续费是多少?包括异地和跨银行的手续费?感谢回答~~ C语言的地址是什么类型,用%d还是%ld输出 C语言中地址值和地址的区别是什么? 你好,农行的pos机,信用卡刷卡手续费是多少,刷卡后客户能在不经过我的情况下撤销转账吗 C语言中,什么是地址值? 交通银行信用卡手机银行激活获赠30元刷卡金怎么使用? 农行卡一天最多可以转入多少钱 C语言用什么操作地址? 想问下 为什么我信用卡没有使用,怎么会出现一笔3块钱刷卡金转入,谁知道是怎么回事? c语言结构体变量的地址是啥呢? c语言指针地址的全部表示方法 农业银行的对公账户和pos机【刷卡机】问题? c语言中什么叫首地址? C语言中地址符究竟是什么 C语言中变量的地址是什么类型的? c语言中地址代表什么意思?有哪些作用? 关于农行电话刷卡机手续费的问题。急,在线等,, c语言中&取地址是什么意思? 泰安秀城需要买票吗 泰山秀城需要门票吗 泰安秀城外地游客多少钱门票 泰山秀城门票价格 去泰安秀城需要门票吗 泰山秀城门票多少钱 问去泰山秀城60岁以上老人免费吗 泰山秀城表演时间 泰山秀城不看演出需要门票吗 泰山秀城几点营业 泰安秀城今天开放吗 泰山秀城骑车怎么走 泰山秀城暂停开放吗 泰山秀城几点演出 泰山秀城晚上有灯光吗 丰泽领秀城交通方便吗?应该怎么过去? 求京洛再无佳人2完整版&#x2795;番外 谁有花火系列的虐心小说。请告诉我谢谢。