1樓:聽不清啊
這是因為 bsort() 的第乙個引數是 int a它是乙個陣列。呼叫時以 陣列名 height 作為實參。
在c語言中,陣列名,既是乙個陣列的識別符號,height[i] 可以直接引用它的陣列元素,陣列名還表示陣列的首位址,也是指向陣列首位址的指標。所以,呼叫函式的時候還是使用了指標的。
程式中的函式
void bsort(int a, int n)與void bsort(int *a, int n)是完全等價的,可以直接替換(下面的函式體不需要改動)。
2樓:做而論道
呼叫函式時,引數,是個陣列,這也就相當於指標。
3樓:黃5帝
為什麼非要指標呢?用乙個中間變數也是可以的啊。
指標和中間變數的區別就是指標不改變內容,中間變數是改變變數的內容。
4樓:老鹹魚
(´இ皿இ`)路過,討積分
c語言呼叫函式時,引數傳的是字串,並沒有傳字串指標,為什麼主函式中的值還是會變化?
5樓:奮鬥
在c語言中,字串是以字元陣列的方式儲存的,而陣列的本質就是指標;
因此,傳進去乙個字串,就是把它的位址傳去了。
6樓:匿名使用者
c語言中字串陣列的名字就代表該字串的首位址。所以傳的是位址不是值的拷貝。
為什麼c語言中,陣列可以用void呼叫,既然沒有返回值,為什麼在主函式中,陣列值還是會變 ,
7樓:暮影
要清楚值呼叫
和位址調copy用bai的區別, void sum(int x,int y){};這種是位址調du用,是不會zhi
影響到實參的dao
值的,要是按照位址呼叫(指標呼叫),是共享同乙個存貯空間的,也就是改變的是同乙個記憶體裡面的內容,陣列名的呼叫,就是指標呼叫的一種,int arr(int array,int n){},你在函式裡面改變array的值,實參裡面也會改變的
c語言中呼叫函式的返回值,如果是陣列,主函式要輸出這個陣列怎麼實現啊
8樓:大野瘦子
用指標抄,另外儲存資料的變數襲
退出函式時不得bai消失。
例如:du
#include
int * fun(int n)
void main()
得 0 1 2 3 4
注意事項
1、陣列的維度必須是乙個常量表示式
int main(void)
2、預設情況下,陣列的元素被預設初始化。
而且需要注意的是,和內建型別的變數一樣,如果在函式內部定義了某種內建型別的陣列,那麼預設初始化會令陣列有未定義的值。
9樓:
一般用 函式的 引數傳遞。
如果要通過函式返回值傳遞,可以用指標,另外儲存資料版的變數退出函式時不得消權失。
例如:#include
int * fun(int n)
void main()
得 0 1 2 3 4
10樓:匿名使用者
沒看見過這種用法,如果你的陣列是區域性變數,不能作為返回值,因為函式返回陣列就被釋放掉了(棧記憶體)
如果是全域性變數陣列,對陣列操作的同時資料已經發生改變,不需要返回
如果是動態陣列,以指標型別返回
11樓:
int * func()
void main()
...}
為什麼c語言中陣列中的元素交換函式不用指標,而整形變數需要?
12樓:
因為陣列名就是指標,當然c語言是這樣的,並不是所有語言如此。。。
13樓:匿名使用者
第二個將函式改為 void swap2(int *i,int *j)
c語言用指標和自定義函式實現陣列元素的調換 20
14樓:古神孤鴻
#include
#define n 10
void swap ( int *a, int *b, int n);
int main(void)
void swap (int *a, int *b, int n)}
c語言:我使用子函式將指標變數中的指標進行交換,但是為什麼所指向的變數卻沒有變?程式如下:
15樓:gta小雞
c語言中的任何函式形參都是值傳遞
。所謂引用傳遞,不過是指標的值傳遞而已。
你的函式做的工作只是交換函式中的兩個臨時變數a和b的值,結果不會影響到外部的實參pa和pb。如果想要交換兩個指標的值,你的形參應該為兩個二級指標。
求大神解答錯誤 c語言中如何不用指標交換兩個變數的值 為什麼a,b的值不能回到主函式
16樓:匿名使用者
程式本bai
身就有問題,按du照你寫的程式zhi的意思,應該是要交dao換兩個程式回的值,而按照c語言的實答現方式必須要用到指標不可,程式可以按照以下的方式實現,兩個陣列的長度必須相同,否則會出現陣列下標越界的錯誤
void swap(int a,int b,int n)//此處的陣列已經被弱化成了指標
return;
}int main()
;int b[5] = ;
swap(a,b,5);
printf("%d,%d
",a[0],b[0]);//列印出陣列a和陣列b沒有意義return 0;}
17樓:匿名使用者
實參是指標型別,而形參為整型,型別不一致,出錯!修改swap函式如下:
void swap(int *a,int *b)
c語言呼叫完void函式後如何將值返回主函式實現輸出的呢? void函式沒有返回值。。。是陣列不同
18樓:岔路程式緣
1、來c語言呼叫完void函式後如何自將值返回主函式實現輸出的呢?
答:因為 void函式沒有返回值,要想把讓函式的值帶回主函式,還有兩種辦法,第一是使用指標做引數,第二是瀠陣列做引數。
2、用指標傳遞就可以了嗎,那如果不用指標呢?
答:用指標當然可以啦。如果不用指標,那就選擇用陣列引數了。
19樓:匿名使用者
我看到你對一條回答bai的追問,感覺可能duget到你的點了zhi。
#include
void increase(int *a)int main(int argc, char *argv)上面這個
dao函式最後輸出回的值是12.
void increase(int *a)這個函式傳入的是指標,答a這個引數在increase函式呼叫結束後確實就會被釋放,但a是乙個指標,釋放的是這個指標!但是你仔細看increase這個函式體裡,已經對a這個指標指向的內容做了更改:*a = *a + 1; 我們修改的並不是a而是a指向的內容也就是h的值,所以h的值已經被改變了!
20樓:匿名使用者
可以考慮讓呼叫者提供乙個存放結果的陣列起始位址,函式將結果儲存在陣列中
21樓:匿名使用者
通過全域性變數實現修改
通過函式的指標引數完成返回
通過函式的引用引數完成返回
也可以把陣列作為引數直接在函式中修改
22樓:三城補橋
因為語法就是這樣啊,函式呼叫直接使用其函式名即可,函式是void型別只是標識該函式沒有返回值而已。
23樓:匿名使用者
把void函式換成傳值函式吧
c語言函式呼叫引數傳遞的是什麼,C語言函式呼叫引數傳遞的是什麼
c語言傳遞的是值而不是位址,這一點從vb轉過來的程式設計師一定要注意。否則不經意間就會犯錯誤。另外下層函式修改上層函式變數不是一種好習慣,容易引發錯誤。c語言中函式可以返回乙個函式值,如果你需要返回多個函式值可以用下面的形式 fun int a,int b main 如果按vb的習慣,fun int...
C語言函式呼叫的問題
主函式的a作為輸入引數輸入給函式aaa進行計算,計算後a的值不發生變化。這是c語言的基本規則。從編譯原理角度講,輸入aaa的只是a的值,並不是a所在的暫存器或位址,a的值輸入aaa後,該值被存放在另乙個臨時暫存器或位址,發生改變的是這個臨時暫存器或位址的值,而非a所在的暫存器或位址的值,所以,a的值...
C語言指標建立函式問題,C語言指標呼叫函式問題,急求解釋(本題是《c和指標》上的題目)
第乙個表示傳遞graphadjlist型別的引用g,第二個表示傳遞graphadjlist型別的指標g 另外這是c 不是c。c語言指標呼叫函式問題,急求解釋 本題是 c和指標 上的題目 c語言指標作函式引數時的返回問題 首先,弄懂函式引數都是靠值傳遞。指標也是。進入函式後,函式建立幾個空間給形參,再...