问答文章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 指向新的内存单元

C语言地址运算问题

1. 地址加整数:整数表示移动的单位数。对于二维数组,例如定义了一个数组 `a[][]`,`a` 能代表数组的一行,`a+1` 表示向后移动了一行,即 `a[1]`,也就是 `a[1][0]` 的地址。2. 数组元素管理:`a[i]` 是以单个元素为单位进行管理的,`a[i]+1` 表示以 `a[i][0]` 为起始...

c语言数组、地址问题请高手解释?

定义了数组a,则机器在内存当中给数组a开辟一片内存存储数组a,数组a的元素是顺序存储的,所以说数组a所在的地址就是数组a第一个元素所在的地址,这两个指针(&amp;a,&amp;a[0])其实算是指向同一个地址的,所以打印出来的数值是相同的。p应该是64位32进制形式输出,%d是十进制形式输出的。&amp;a[0]跟a其实...

c语言 地址问题

1. 指针是存储的地址;2. L是定义的一个结构指针, L.elem引用有语法错误, 应该是L-&gt;elem 3. &amp;是取址运算符; SqList中的成员elem也是个整型指针, 若是要得到elem的值(也就是elem指针的内容), 应 p = L-&gt;elem, 则p存的地址和elem存的地址相同, 也就是指定内存同一地址, *p和*(L-&gt;elem...

C语言输出地址问题

首先,printf("i的地址为:%p",i);不是输出地址,而是输出i的值,但是会以16进制输出。如果输出i地址,应该是 printf("i的地址为:%p",&amp;i);而%d就是以十进制输出i的值

C语言中地址的问题!~

include&lt;stdio.h&gt; main(){ int *p,i;p=&amp;i;printf("%p\n",p); //%o是8进制格式输出,%p是按地址格式输出 } 你说的很对,输出的是i的地址,即指针变量P的值 此地址为一个系统自动分配的地址,在系统的堆栈区,而不是动态存储区

C语言里地址的问题

数组的(首)地址就是数组名,比如int s[10],s就是地址。指针,p是指针本身,*p才是指针这个空间(房间中,p有自己的房间号,*p是p的房间里面存的一个房间号)中的存储的地址。但是真正用的时候,一般不用地址做运算,都是用地址里面的数据。gets(s)也是对这个地址的连续空间里面进行数据的输入。

关于c语言,地址问题?

地址和地址上存储的字节是两个不同的概念 内存是按照字节进行编址 可以认为所有字节排成一排,每个字节的编号就是地址值 所以地址是32还是64位与地址上能存多大东西没关系 至于为什么按照字节编址,是因为一个字节可以表示0-255共计256个数字,在很多情况下,比如字符串,用字节就够了 如果按照32位进行...

C语言,地址问题

p表示数组的首地址,a也表示数组的首地址,所以p+1与a+1表示a[1]或者p[1]的地址。如果表示a[1]值则用*(p+1)或*(a+1)

C语言地址运算问题

地址+整数,这里的整数代表的是向后移动的单位数,二维数组的各个地址是这样的:比如定义了一个数组a[][],a能够为数组的一行代言,a+1就向后走一行变成a[1]了,也就是a[1][0]的地址,a[i]是以单个的元素为单位进行管理的,那么a[i]+1就是以a[i][0]为起始点向后走一个元素所占的字节...

地址的问题 C语言

答案是 D 1a6 - 194 = 12 这是十六进制 因为打印显示的是十六进制结果 十六进制 12 就是十进制 18 清楚了吧

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
为什么网上有那么多贝婴邦,到底哪个是真的啊? 电饭煲哪个是小火 新手怎样种植睫毛? 阿维菌素使用方法 阿维菌素的作用和使用方法是什么?怎 这个账号密码是什么?路由器密码也不对,宽带密码也不对 拼多多拒收退回快递怎么操作 高通与谷歌合作的Android Things物联网系统明年对所有骁龙处理器开放... 艾滋病中医能治疗吗 中药用于艾滋病的效果 工行消费反刷卡金返现30元怎么用? C语言里面的指针和地址有什么区别??? C语言中的 指针 和 地址的关系? oracle中怎样查询表中最近两周内的数据 农业银行转账和刷卡的手续费是多少?包括异地和跨银行的手续费?感谢回答~~ C语言的地址是什么类型,用%d还是%ld输出 C语言中地址值和地址的区别是什么? 你好,农行的pos机,信用卡刷卡手续费是多少,刷卡后客户能在不经过我的情况下撤销转账吗 C语言中,什么是地址值? 交通银行信用卡手机银行激活获赠30元刷卡金怎么使用? 农行卡一天最多可以转入多少钱 C语言用什么操作地址? 想问下 为什么我信用卡没有使用,怎么会出现一笔3块钱刷卡金转入,谁知道是怎么回事? c语言结构体变量的地址是啥呢? c语言指针地址的全部表示方法 农业银行的对公账户和pos机【刷卡机】问题? c语言中什么叫首地址? C语言中地址符究竟是什么 C语言中变量的地址是什么类型的? c语言中地址代表什么意思?有哪些作用? 关于农行电话刷卡机手续费的问题。急,在线等,, c语言中&取地址是什么意思? 泰安秀城需要买票吗 泰山秀城需要门票吗 泰安秀城外地游客多少钱门票 泰山秀城门票价格 去泰安秀城需要门票吗 泰山秀城门票多少钱 问去泰山秀城60岁以上老人免费吗 泰山秀城表演时间 泰山秀城不看演出需要门票吗 泰山秀城几点营业 泰安秀城今天开放吗 泰山秀城骑车怎么走 泰山秀城暂停开放吗 泰山秀城几点演出 泰山秀城晚上有灯光吗 丰泽领秀城交通方便吗?应该怎么过去? 求京洛再无佳人2完整版&#x2795;番外 谁有花火系列的虐心小说。请告诉我谢谢。
  • 焦点

最新推荐

猜你喜欢

热门推荐