C語言程式指標陣列的問題

2022-10-31 02:55:18 字數 1338 閱讀 7569

1樓:匿名使用者

首先程式存在一個錯誤if(max其次 max=a,單提陣列名錶示的是陣列第一個元素的地址,所以此處表示指標指向陣列的第一個元素,如果*max的值變了,那麼陣列第一個元素對應的值也相應改變

*max=a[0] 表示指標指向的單元儲存的內容被賦值為a[0]所對應的整數值,*max改變並不影響a[0]所儲存的值

對應程式如下,可交替註釋掉兩個函式的呼叫,結果與上述一致#include

#include

void fun1(int a, int n , int *max, int *d)

{int i;

max=a;*d=0;

for(i=0;i

the 4 is the max 5

1    2    3    4    5當選擇fun2時 輸出結果為

the 4 is the max 5

5    2    3    4    5

2樓:匿名使用者

max是指標,指向一個整型變數(假設這個變數為 x)第一個函式中 max = a ,意思是讓max 指向了陣列a的第一個元素

第二個函式中 * max = a[0], 意思是取陣列a的第一個元素a[0] 賦予由max指向的整型變數x

正確的是第二函式!

3樓:匿名使用者

這裡max是指標,你加了*max就是max指向的變數了。

max=a或者max=&(a[0])是讓max指向a陣列,那麼用max[n]效果和a[n]一樣。

如果用*max=a[0],那就是把max指向的變數用a[0]賦值。

說實話我看不懂你這程式要幹什麼。

4樓:

第一個應該是這樣:

*max = *a;

兩個程式的下面一句都要改:

if(*max

5樓:匿名使用者

你這題是要找出陣列中最大的值放在地址為*max中。max是一個int型的指著變數,你第一個函式中max=a,相當於把陣列a的地址賦給了max,此時max和a可以達到同樣的效果,因為兩者本質上來講都是相同的地址。

你第二題把*max=a[0];你實際上是把a陣列的第一個元素的值賦給了指標變數max所指向的那個變數,所以說*max和a[0]的值可以看成是對等的,而max本身的值和a是不對等的,max的值取決於你在呼叫這個fun函式是給這個第三個引數傳的地址值。

6樓:

前邊的一個錯誤在於:max=a;這表明把一個地址賦給了max;而地址不能與陣列中的數比較大小(也就是 max

C語言指標陣列與二維陣列行指標小問題

指標陣列 copy 該陣列中存放的全部都是指標,例如 原例子中的char name,這個是一個標準透了的一維陣列,就像是陣列 int a 4 a 1 2 a 2 3 不同的是陣列name存放的是指標,陣列a存放的是數字 name 1 name 2 表示的是把name 2 的指標賦值給name 1 就...

c語言指標陣列如何存放函式地址C語言指標陣列如何存放函式地址

c c 的指標的靈活,常把許多初學者搞暈,連高手也是如此。1.當然,可以呀,一切資料都可返回 2.複合指標型別直接表示非常麻煩 連高手都是這樣 可以分解成多個簡單型別 typedef void funtype void funtype num 100 分解後簡單多了!3.因為函式名不是字串,初始化時...

c語言 怎麼呼叫指標陣列函式,C語言 怎麼呼叫指標陣列函式

1.函式指標的陣列定義方法 返回值型別 指標變數名 number 形參列表 例如 double add double a,double b double sub double a,double b double mul double a,double b double div1 double a,d...