C_and_CPP 板


LINE

图: https://imgur.com/a/s2OAcCl 第二个strcpy,我怎麽看都是pass by reference,怎麽书上说的是by value? 但书上又说,因为是by value,所以可以随意改s跟t的值(想怎麽用就怎麽用)。这让我联 想到一个问题 如果擅自更改s跟t的值,下一次function call时传进来的值会被改掉吗? 比如第一次call function: char * des; char * src; des = &arr1[0]; src = &arr2[0]; strcpy(src, des); 一开始的des与src都是指到arr1与arr2的头,但跑完while後t跟s都已经指到arr1与arr2的 尾巴了,下一次再call strcpy的话,是不是又要重新assign一次? i.e. des = &arr1[0]; src = &arr2[0]; ps: 请问t[i]assign给s[i]後,是s[i]跟'\0'做comparison吗? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.216.156.33
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1530064234.A.119.html ※ 编辑: zzss2003 (61.216.156.33), 06/27/2018 10:00:04
1F:→ sarafciel: 你从char的角度看是是call by ref,char *的话就是call 06/27 10:00
2F:→ stupid0319: 我怎麽看也都是pass by value 06/27 10:00
3F:→ sarafciel: by value没有错 外面的des跟src指到的东西会改 但是des 06/27 10:01
4F:→ sarafciel: 跟src本身是call by value传进去 所以不会变 06/27 10:02
5F:→ sarafciel: *才 06/27 10:07
所以s跟t是local variable?然後把&des跟&src的value copy一份过去给s与t? ※ 编辑: zzss2003 (61.216.156.33), 06/27/2018 10:26:12
6F:→ loveflames: 答对了 06/27 10:27
7F:→ sarafciel: &des跟&src的(X) des跟src的value(O) 06/27 10:30
8F:→ sarafciel: 你想传&des跟&src的话 s跟t要宣告成char ** 06/27 10:31
拍谢,打错了。是des与src的value,多打了&
9F:→ loveflames: java的reference行为比较像C/C++的指标,以这角度来说 06/27 10:34
10F:→ loveflames: 是call by value,而C++ reference是真正意义的call 06/27 10:35
11F:→ sarafciel: 改成这样的话就会是你内文後段说的行为 06/27 10:35
12F:→ loveflames: by reference,不过底层实作也是用指标 06/27 10:35
谢谢各位的建议,我想我要来复习一下by val与by ref的定义了 ※ 编辑: zzss2003 (60.251.49.183), 06/27/2018 11:00:05
13F:→ MOONRAKER: 看到参数前面有&才是pass by ref 而那是C++ 06/27 11:43
14F:→ MOONRAKER: C是没有pass by ref的 06/27 11:44
15F:→ tinlans: 这类名词只是 syntax sugar 层级上的诠释, 06/27 12:34
16F:→ tinlans: 换句话说不那麽甜美还要多劳动你的就不会是 by ref。 06/27 12:34
17F:→ tinlans: 你看不清楚的话,先 typedef char *CharPtr, 06/27 12:37
18F:→ tinlans: 然後把全部的 char * 换成 CharPtr 就会懂了。 06/27 12:37
19F:→ tinlans: 指标型别,充其量也只是变数的一种型别,就只是这样。 06/27 12:39
20F:→ tinlans: 在语言结构上,int 和 char * 都仅仅是一个型别而已。 06/27 12:40
21F:→ uranusjr: Java 的 reference 其实是个彻头彻尾的 pointer, 根本不 06/27 18:09
22F:→ uranusjr: 是理论意义上的参考, 一切都是个假象 06/27 18:10







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP