第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將數(shù)組作為參數(shù)傳遞給C中的函數(shù)

將數(shù)組作為參數(shù)傳遞給C中的函數(shù)

C
拉風(fēng)的咖菲貓 2019-07-20 09:58:57
將數(shù)組作為參數(shù)傳遞給C中的函數(shù)我編寫了一個(gè)包含數(shù)組作為參數(shù)的函數(shù),并通過傳遞數(shù)組的值來調(diào)用它,如下所示。void arraytest(int a[]){     // changed the array a     a[0]=a[0]+a[1];     a[1]=a[0]-a[1];     a[0]=a[0]-a[1];}void main(){     int arr[]={1,2};     printf("%d \t %d",arr[0],arr[1]);     arraytest(arr);     printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]);}我發(fā)現(xiàn)雖然我在打電話arraytest()函數(shù)通過傳遞值來實(shí)現(xiàn),該函數(shù)的原始副本是int arr[]都變了。你能解釋一下為什么嗎?
查看完整描述

3 回答

?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

將數(shù)組作為參數(shù)傳遞時(shí),

void arraytest(int a[])

意味著與

void arraytest(int *a)

所以你修改main中的值。

由于歷史原因,數(shù)組不是一流的公民,不能按值傳遞。


查看完整回答
反對 回復(fù) 2019-07-20
?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

在C中,除了少數(shù)特殊情況外,數(shù)組引用總是“衰變”到指向數(shù)組的第一個(gè)元素的指針。因此,不可能“按值”傳遞數(shù)組。函數(shù)調(diào)用中的數(shù)組將作為指針傳遞給函數(shù),這類似于通過引用傳遞數(shù)組。

編輯:有三個(gè)這樣的特殊情況,數(shù)組不會(huì)衰減到指向其第一個(gè)元素的指針:

  1. sizeof a

    sizeof (&a[0]).

  2. &a

    &(&a[0])

    (與

    &a[0]).

  3. char b[] = "foo"

    char b[] = &("foo").


查看完整回答
反對 回復(fù) 2019-07-20
?
犯罪嫌疑人X

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果你想將一維數(shù)組作為函數(shù)中的參數(shù)傳遞。,您必須以下列三種方式之一聲明一個(gè)正式參數(shù),而這三個(gè)聲明方法都會(huì)產(chǎn)生類似的結(jié)果,因?yàn)槊總€(gè)方法告訴編譯器將收到一個(gè)整數(shù)指針。.

int func(int arr[], ...){
    .
    .
    .}int func(int arr[SIZE], ...){
    .
    .
    .}int func(int* arr, ...){
    .
    .
    .}

因此,您正在修改原始值。


查看完整回答
反對 回復(fù) 2019-07-20
  • 3 回答
  • 0 關(guān)注
  • 728 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號