C语言被调函数与主调函数数值问题

参数有值传递和引用传递两种(你用的都是值传递)

值传递的意思是将你的参数的数值传递到调用的函数中(你的参数的值被复制了一份给了被调用的函数),所以才函数中怎么改变,都不会对原数值产生影响(打个比方,你抄袭了一篇文章,然后自己在那里改啊改的,但是原来的文章是没有动的)

后边定义的a[10]传递过去了为什么改了呢,这个是因为他是个数组,传递进去的不是数值,而是个指针,这个时候,在函数中,你修改指针的值,外边是不会有影响的,但是,你修改的是指针指向的地址的值,外边的指针指向的地址里的数据被改了,所以外边的数据就更改了

(就相当于你家里有个电视,你家里有个遥控,你弄了个一模一样的遥控,你把你的遥控甩坏了,家里的遥控还是不会有影响,但是你用遥控把电视的频道改了,这就受影响了)

数组名*(a+1) 为什么可以表示 a[1]

1、数组的首地址,在同一计算机上,正常运行的情况下,这个地址是不会变的。

2、数组的首地址,在不同的计算机,不同的系统上,一般情况下这个地址会变的。

3、现代操作系统的内存管理使用的是虚拟内存技术,一般来说,习惯性的讲内存看作是一个大的字节数组,每一个字节都有一个内存地址,本身虚拟内存地址的变化在同一台计算机上基本不大,但是实际的物理内存地址,变化肯定是很大的。问题中所说的数组的首地址,本质上是虚拟内存地址,因此才有1和2中的描述。

数组:我们先咬文嚼字一下,数指数据,组,就是小组,由数据组成的小组,就叫数组(学计算机的,不光要学好计算机,也要学好语文,偶尔还

要懂点医学,你要是经常看计算机图书,你看台湾人写的书,都有很多文言文在里面,我们这点做的完全没有台胞做的好,所以人家计算机牛啊,世界上的电子代

工,台湾占了绝大数比例)。

数组有几个特点一定要注意,看到数组就要想到:

1、?

数组里面的数据类型是相同的,小组里面的成员肯定要一样的啊,驴堆里站一马,驴马不分,鸡窝里蹲一丹顶鹤,鹤立鸡群,这都是不合群的东西,计算机里面也讲

“和谐”。我们顺便看下数据的基本类型:int float double char 这些是基本类型,所以它们可以存在以下类似数组:int

a[10], float f[10], doule d[10], char str[10]; 它们每一个都有10个元素,每一个元素的类型都是其前面声明的类型。我们是学嵌入式的,我们不能光看到表面的东西,我们要看到底,好东西是走了光才叫好,光有好东西,别人不知道也不行。其实数组在内存中是连续分配的,如下图:

定义了一char型数组a,它有6个元素,分别是'A', 'B', 'C', 'D', 'E',

'F',它们在内存里面是连续存放的,每个元素占用一个字节。 强烈谴责那些将'A'

当成"A"的人,前者是单个字符,后者是字符串,鄙视那些,问“字符和字符串有什么区别?”的人,不知道字符和字符串的区别,那你吃过羊肉串吗?单个羊肉

块能叫串吗,多个羊肉块串起来才叫串,所以字符是单个,字符串可以是多个字符组成的数组(最后有一个结束符号\0),羊肉块串起来一烤就叫烤羊肉串,字符

串一拷,叫拷贝串,学计算机哪有那么简单,要是我开个学校,入学前要体检,测视力,量身高体重,....,三围什么的,不行的PASS。

仔细看上面的图,每一个字符都有一个地址,它们的跨度是1(字节),数组的每个元素都可以通过下标来访问,下标(index,

for循环变量经常用i就是因为这个东西)其实就是他在数组中的位置,也就是他的号,拉10个人过来,报数,1,2,3.....,只不过,C语言里数组

的下标是从0开始的,在计算机里面能访问的最小单位就是字节了,也就是地址只能找到以字节为单位,不能再精确了。数组名a和变量名道理上是一样的,在编译

时就和数组的首地址绑定上了,a就是数组的首地址,变量名和数组名其实都是方便人们记忆而取的代号,它在代码反汇编后,其实不存在变量名的,回想下,访问

数据有两种方式,既然反汇编后的代码不存在变量名,只能通过那种方式访问数据了,那就是地址。数组中的每一个元素,可以被看成一个变量(回想下变量的特

点),因此其可以被读,写,修改,爱怎么得瑟怎么得瑟,你只要不把房间拆了(内存空间),怎么折腾都行。每一个元素的地址都可以通过首地址的偏移量

(offset这个词记住,四级里没有)来算出来,这个偏移量说白了就是下标了。比如上面的图中:'C'所在地址0x28c5,相对首地址0x28c3的

偏移量是2,那a[2]也可以访问'C'了,注意一点,a代表数组,代表数组的首地址,代表数组第一个元素的地址,这“三个代表”

一定要记住。那a+1呢,a是三个代表,那它是第一代表还是第二个代表,还是第三个代表呢?这儿的a应该是第一个元素地址的意思表示的意思应该

是&a[0],a+1是个地址的算术运算,而数组是个一维数组,数组中每个元素都是一个字符,a+1就是a当前地址0x28c3的下一个元素的地

址0x28c4(结合图来看),也就是'B'的地址,如果a是一个二维数组名的话,那么二维数组被编译器理解为一个一维数组,一维数组里的每一个元素是一

个一维数组

本文来自作者[潮世祥]投稿,不代表博羽号立场,如若转载,请注明出处:http://www.sz-boyu.cn/sz/10860.html

(12)

文章推荐

  • 中国银联是干什么的?

    网上有关“中国银联是干什么的?”话题很是火热,小编也是针对中国银联是干什么的?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。中国银联是经国务院同意,人民银行批准,在合并18家银行卡信息交换中心的基础上,由国内80多家金融机构共同发起成立的银行卡联合组织。中国

    2025年07月23日
    27
  • 教程开挂辅助“微信小程序微乐麻将开挂神器下载”开挂详细教程

    您好:微信小程序微乐麻将开挂神器下载这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,添加客服微信【添加图中微信】安装软件.

    2025年07月25日
    27
  • 团员编号是什么意思啊!?

    网上有关“团员编号是什么意思啊!?”话题很是火热,小编也是针对团员编号是什么意思啊!?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。团员编号的查询方式:1、《入团志愿书》首页的发展团员编号,右上角红字,既是你的发展团员编号。2、你填写过入团申请书,并且正式成

    2025年07月28日
    32
  • 实测分析“和悦游戏有挂吗”开挂详细教程

    您好:和悦游戏有挂吗这款游戏是可以开挂的,软件加微信【添加图中QQ群】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,添加客服微信【添加图中QQ群】安装软件.1.和悦

    2025年08月05日
    11
  • 教程开挂辅助“朱雀吴江三缺一有挂吗”最新辅助详细教程

    您好:朱雀吴江三缺一有挂吗这款游戏是可以开挂的,软件加微信【添加图中QQ群】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,添加客服微信【添加图中QQ群】安装软件.

    2025年08月05日
    9
  • 玩家辅助神器:“皇冠十三水有挂吗”其实确实有挂

    亲,皇冠十三水有挂吗这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到-人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,添加客服QQ群【】安装软件. 微信打麻将是一款非常流行的棋牌游戏,

    2025年08月05日
    10
  • 分享实测“哥哥跑得快记牌器”开挂(透视)辅助教程

    亲,哥哥跑得快记牌器这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的通过添加客服QQ群:本司针对手游进行匹配,选择我们的四大理由:1、软

    2025年08月06日
    13
  • 实测教程”神盾大厅开挂辅助软件下载”开挂详细教程

    实测教程”神盾大厅开挂辅助软件下载”开挂详细教程>>>您好:神盾大厅开挂辅助软件下载,软件加微信【】确实是有挂的,很多玩家在神盾大厅开挂辅助软件下载这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑神盾大厅开挂辅助软

    2025年08月12日
    11
  • 实操教程“卡五星游戏有挂吗”最新辅助详细教程

    您好:卡五星游戏有挂吗这款游戏是可以开挂的,软件加微信【添加图中QQ群】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,添加客服微信【添加图中QQ群】安装软件.1.卡

    2025年08月15日
    10
  • 丰田亚洲龙是一汽丰田还是广汽丰田

    亚洲龙是不是一汽丰田还是广汽丰田亚洲龙是一汽丰田旗下的一款中型轿车。亚洲龙和凯美瑞是同级别车型,凯美瑞是广汽丰田旗下车型。亚洲龙配备了三台发动机,其中一台是2.0升自然吸气发动机,另外两台是2.5升自然吸气发动机。有一款搭载2.5升自然吸气发动机的混合动力车型。混合动力版本的2.5升自然吸气

    2025年08月16日
    4

发表回复

本站作者后才能评论

评论列表(4条)

  • 潮世祥
    潮世祥 2025年08月06日

    我是博羽号的签约作者“潮世祥”!

  • 潮世祥
    潮世祥 2025年08月06日

    希望本篇文章《C语言被调函数与主调函数数值问题》能对你有所帮助!

  • 潮世祥
    潮世祥 2025年08月06日

    本站[博羽号]内容主要涵盖:生活百科,小常识,生活小窍门,知识分享

  • 潮世祥
    潮世祥 2025年08月06日

    本文概览:参数有值传递和引用传递两种(你用的都是值传递)值传递的意思是将你的参数的数值传递到调用的函数中(你的参数的值被复制了一份给了被调用的函数),所以才函数中怎么改变,都不会对原数值...

    联系我们

    邮件:博羽号@sina.com

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们