請解釋形參int arr和形參intarr

2022-07-16 02:05:06 字數 2831 閱讀 9047

1樓:匿名使用者

int &arr[10] 形參的&, 也就是引用是陣列的引用, 但是c++中沒有陣列的引用這樣的語句。這個是錯誤的。

int (&arr)[10] 這個是宣告乙個指向大小為10的陣列的變數的引用。

如:void fun2(int (&arr)[10])

調 用:

int a[10];

fun2(a);

在呼叫的時候fun2函式函式就不會以傳值的方式再複製乙份陣列,而是引用傳遞的是陣列a的本身。

這和以指標的使用效果基本一樣,唯一不同的是指標的傳值本身在函式體內被修改不能影響到所呼叫的實參,僅只能以指標指向的值是可以修改並可以在函式體外得以體現的。

2樓:純情少年落雨妹

第乙個形參是引用傳遞,改變arr陣列,如:在自定義函式void function(int &arr[10])中,不需要該函式的返回值,就能直接改變呼叫該函式的函式體中陣列arr;

第二個形參 int (&arr)[10],是傳遞陣列元素的位址(十個位址型別的元素的位址),這個跟值傳遞

差不多,只是這個值是位址!

希望對你有幫助!謝謝!

3樓:匿名使用者

int &arr[10] 中arr先做下標運算,再做解除引用運算,得到整形資料

int (&arr)[10] 中arr先做解除引用運算,在做下標運算,得到整形資料

int *arr[10];int (*arr)[10];int (arr*)[10]; 這三個有何區別?求例子……

4樓:匿名使用者

我只知道前兩個:

第乙個是指標陣列,他本質上是乙個陣列 ,這個陣列裡面的所有元素都是指標。

第二個是陣列指標,他本質上是乙個指標,指向陣列的首位址。

c語言裡面定義的int arr[10];那麼*(arr+3)是什麼意思?

5樓:匿名使用者

arr整形陣列共10個元素*(arr+3) 意思是取出arr[3]中的值

6樓:匿名使用者

陣列指標啊,+幾就是第幾個了

*(arr+0)=arr[0]

*(arr+1)=arr[1]

*(arr+2)=arr[2]*(arr+3)=arr[3]類推

7樓:匿名使用者

陣列嗎?你能不能把源**貼出來?

int[] arr = new int[10];是什麼意思?

8樓:

這是c#的語法,表示申明乙個整形一維陣列arr,同時分配10個整數大小的空間,具體大小要看當前系統整形所佔位元組大小,一般是4個位元組,所以4*10=40個位元組,c#除了這40個位元組之外還會分配額外管理用的空間,因為c#內部所有都是物件。

c++的語法是int* arr=new int[10];

但是在空間分配和記憶體管理上是不同的。

9樓:

應該是 int *arr = new int[10]; 才對,就是建立10個 int 的陣列

10樓:匿名使用者

建立乙個有10個int型元素的陣列 相當於int arr[10];

int * * a[10] int * (*a)[10]和 int(*a[10])() 是什麼意思

11樓:匿名使用者

比如:#include int main()}int (*a[10])()

a是乙個包含10個元素的陣列,這個10個元素的型別是:指向不接受引數,返回int型的函式的指標。

比如:#include #define fun(n)\

int func_##n()\fun(1)fun(2)fun(3)fun(4)fun(5)/*定義10個函式*/

fun(6)fun(7)fun(8)fun(9)fun(10)int main();

for(int i = 0; i < 10; ++i)

printf("\treturn value: %d\n", (*a[i])()); // 呼叫這10個函式

}int (*a)(int) ;

int (*a[10])(int);

int *(*a)(int) ;

幾個定義的含義?int (*a)(int) ; //a是乙個指標,它指向帶有int形參並返回int型別的函式,即a是函式指標

int (*a[10])(int); //a是乙個陣列,陣列有10個指標.這裡的指標和上面a是一樣的.

int *(*a)(int) ; //a是乙個指標,它指向帶有int形參並返回int*型別的函式貪婪法:從左到右盡量讀取有意義的組合,

int (*a)(int) ; 一眼看過去 這一整個都有有意義的,你要學會看這樣的宣告,a是乙個指標,指向乙個輸入引數為int、返回值是int的函式。

int (*a[10])(int); 注意,*優先順序低於,因此a是乙個陣列,陣列裡面放著指標,其中指標指向乙個輸入引數為int,返回值是int的函式。

int *(*a)(int) ; a是乙個指標,指向輸入引數是int,返回值是int*(整型指標了)的函式。

當函式形參型別為int arr時在該形參可以被看做乙個什麼樣的指標

12樓:匿名使用者

我知道你指的是int arr畢竟array是陣列的意思,然後首先明白陣列做引數退化成指標,所以首先推導出形參是int*型別。第二由於陣列名被編譯器解釋為陣列首元素位址,所以該形參指向arr的首元素。這是乙個極其危險的做法

函式形參,為什麼值不改變?C

從主函式main開始執行,執行到fun x 時,此時為x實參,其值為2,下一步呼叫fun函式,將2傳遞給形參x,繼續執行程式,形參x的值被賦為7,但注意,被呼叫的函式為無值型void,沒有return,無法將得到的形參值x 7返回主函式,所以x的值仍然為2,沒有改變。1c 標準中沒有所謂的 c 為什...

c語言程式設計,編寫函式,根據形參x和y的關係,返回不同的值

include int cmp int x,int y scanf d d a,b c cmp a,b printf d c d n a,s c 1 b return 0 如下 include include int func int x,int y else if x y else int mai...

編寫函式fun其功能是,根據整型形參m,計算如下公式,y

float fun float m return y 講解一下,求m!那裡應該能看得懂吧,我就不多說了。從while迴圈那裡開始,我是進行倒退計算,每次執行y 1 sum,迴圈m次,就表示y 1 m 1 4 1 2 根據你給的公式,m比前乙個數大2,所以每次m都自減2,這樣就能達到上面那條倒退計算的...