關於c語言指標和地址問題

2022-11-13 01:45:15 字數 1338 閱讀 8306

1樓:

針對第一個問題:

&是取地址符號,資料在計算機中儲存,有相應的地址能夠找到.

陣列頭部就相當於一個指標,如果float x[n],那麼x代表著陣列中的首地址,由於陣列在記憶體佔用的是連續儲存空間.因此也可以用指標去得到它的資料.

你呼叫陣列的時候,其實也就是傳遞陣列的首地址給函式,那麼就不需要&符號了.然而你想傳遞thetaf,這個thetaf只是個資料,想在函式中改變它的值,那麼可以通過得到資料的地址,在地址中改變資料.

第二個問題

同上面回答,可以採用一個全域性變數,也就是定義在函式外面的變數,最好在.c檔案開始的地方.

第三個問題:

返回一個陣列即返回它的首地址就可以了,如果你能夠瞭解到計算機資料在記憶體中的排列,那麼這個概念就非常容易理解.(浮點數和整數一樣,在記憶體中佔用4個位元組,

#include

float * sumarray(float *x, float *y,int len)

return sum;//這裡返回的是sum陣列的首地址,你可以把sum理解為一個指標的地址,也可以理解為一個陣列的首地址.請注意(*sum和sum[0]的地址是一樣的,sum是sum[n]的首地址),如果你能區分出這個概念,指標也是小case了.

}int main()

sum = sumarray(x,y,10);//將返回的傳遞給sum指標,或者所讓sum指向陣列返回的地址

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

printf("%d",sizeof(float));//檢視浮點數在電腦中佔用的位元組

return 0;

}通過函式,可以返回一個陣列,我已經除錯通過.你也可以在你的電腦上除錯這段程式,加深理解,

ps:如果覺得我的答案能回答你的問題,請採納,謝謝~

2樓:匿名使用者

指標是用來儲存地址的,&是取地址的意思。 int a; &a就是取整數a的地址。

然後陣列是會有若干個元素,陣列在記憶體中是連續存在的,所以,陣列名就是首地址,可以節省一個取地址運算子。

int a[10] 陣列名a就是陣列a的首地址

3樓:匿名使用者

&thetaf,&iarea,首先弄清,引用的意思:相當於重新命名,也就是a,你給他重新取了個名字叫b,你對b做了什麼事情,也就相當於對a做了什麼事情。

前四個不加是因為,函式裡只是需要這個變數的一個值,而不對這個變數進行修改。(剛剛看錯,&thetaf,&iarea是將變數地址拷貝給指標取用(和引用差不多功效),而前面的只是簡單複製。)

可以使用全域性變數。

C語言指標問題,C語言指標問題

include int main void max min sz 0 for i 1 ip i printf max d position d n max,j 1 printf min d position d n min,k 1 return 0 c語言指標問題 10 最好貼上完整程bai序 或標...

C語言的問題,指標陣列,c語言指標陣列

改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...

c語言指標問題

指標變數和普通變數沒有什麼區別,指標32位四位元組,裡面儲存的是一個記憶體空間的地址,就像一個整形變數int a,a就可以代表一個整數,一個指標變數int p,p就可以代表一個地址資料,而 地址,代表去這個地址指向的記憶體空間取出裡面的內容,因此如果是要取出這個指標所指向的記憶體裡面的內容就是 p,...