[問題] pass by value or reference?
圖: 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://www.ptt.cc/bbs/C_and_CPP/M.1530064234.A.119.html
※ 編輯: zzss2003 (61.216.156.33), 06/27/2018 10:00:04
→
06/27 10:00,
7年前
, 1F
06/27 10:00, 1F
→
06/27 10:00,
7年前
, 2F
06/27 10:00, 2F
→
06/27 10:01,
7年前
, 3F
06/27 10:01, 3F
→
06/27 10:02,
7年前
, 4F
06/27 10:02, 4F
→
06/27 10:07,
7年前
, 5F
06/27 10:07, 5F
所以s跟t是local variable?然後把&des跟&src的value copy一份過去給s與t?
※ 編輯: zzss2003 (61.216.156.33), 06/27/2018 10:26:12
→
06/27 10:27,
7年前
, 6F
06/27 10:27, 6F
→
06/27 10:30,
7年前
, 7F
06/27 10:30, 7F
→
06/27 10:31,
7年前
, 8F
06/27 10:31, 8F
拍謝,打錯了。是des與src的value,多打了&
→
06/27 10:34,
7年前
, 9F
06/27 10:34, 9F
→
06/27 10:35,
7年前
, 10F
06/27 10:35, 10F
→
06/27 10:35,
7年前
, 11F
06/27 10:35, 11F
→
06/27 10:35,
7年前
, 12F
06/27 10:35, 12F
謝謝各位的建議,我想我要來複習一下by val與by ref的定義了
※ 編輯: zzss2003 (60.251.49.183), 06/27/2018 11:00:05
→
06/27 11:43,
7年前
, 13F
06/27 11:43, 13F
→
06/27 11:44,
7年前
, 14F
06/27 11:44, 14F
→
06/27 12:34,
7年前
, 15F
06/27 12:34, 15F
→
06/27 12:34,
7年前
, 16F
06/27 12:34, 16F
→
06/27 12:37,
7年前
, 17F
06/27 12:37, 17F
→
06/27 12:37,
7年前
, 18F
06/27 12:37, 18F
→
06/27 12:39,
7年前
, 19F
06/27 12:39, 19F
→
06/27 12:40,
7年前
, 20F
06/27 12:40, 20F
→
06/27 18:09,
7年前
, 21F
06/27 18:09, 21F
→
06/27 18:10,
7年前
, 22F
06/27 18:10, 22F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章