c語言地址指針
① 關於c語言指針和地址問題
針對第一個問題:
&是取地址符號,數據在計算機中存儲,有相應的地址能夠找到.
數組頭部就相當於一個指針,如果float
x[n],那麼x代表著數組中的首地址,由於數組在內存佔用的是連續存儲空間.因此也可以用指針去得到它的數據.
你調用數組的時候,其實也就是傳遞數組的首地址給函數,那麼就不需要&符號了.然而你想傳遞thetaf,這個thetaf只是個數據,想在函數中改變它的值,那麼可以通過得到數據的地址,在地址中改變數據.
第二個問題
同上面回答,可以採用一個全局變數,也就是定義在函數外面的變數,最好在.C文件開始的地方.
第三個問題:
返回一個數組即返回它的首地址就可以了,如果你能夠了解到計算機數據在內存中的排列,那麼這個概念就非常容易理解.(浮點數和整數一樣,在內存中佔用4個位元組,
#include
<stdio.h>
float
*
SumArray(float
*x,
float
*y,int
len)
{
float
*sum;
int
i
=
0;
for(i=0;i<len;i++)
{
sum[i]
=
x[i]
+
y[i];
//*(sum+i)
=
*(x+i)
+
*(y+i);
}
return
sum;//這里返回的是sum數組的首地址,你可以把sum理解為一個指針的地址,也可以理解為一個數組的首地址.請注意(*sum和sum[0]的地址是一樣的,sum是sum[n]的首地址),如果你能區分出這個概念,指針也是小case了.
}
int
main()
{
float
x[10],y[10];
float
*sum;//float
sum[10];
int
i
=
0;
for(i=0;i<10;i++)
{
x[i]
=
i;
y[i]
=
i*10;
printf("%f\t%f\n",x[i],y[i]);
}
sum
=
SumArray(x,y,10);//將返回的傳遞給sum指針,或者所讓sum指向數組返回的地址
for(i=0;i<10;i++)
{
printf("%f\n",sum[i]);
}
printf("%d",sizeof(float));//查看浮點數在電腦中佔用的位元組
return
0;
}
通過函數,可以返回一個數組,我已經調試通過.你也可以在你的電腦上調試這段程序,加深理解,
PS:如果覺得我的答案能回答你的問題,請採納,謝謝~
② C語言裡面的地址是什麼意思,指針指向一個變數的地址
C語言裡面的地址實際上就是一個內存單元的編號,計算機一般是以一個位元組為最小的存儲單元的,每個位元組就給它編一個編號,這個編號就是這個位元組的地址,這個編號也就是地址是具有唯一性的。指針指向一個變數的地址,這個類似於,通過知道房間號就可以確定這個房間的具體位置是一樣的道理,這個房間編號就是房間的地址。
③ C語言關於指針的問題,指針的地址
printf("%s\n",p);為列印字元串,傳的是字元串的地址,p就是一個指向這個字元串地址,所以沒什麼問題。
若你要列印這個物理地址,直接printf("%d\n",p);就可以拉,你加個*,就是取這個地址的值了,所以printf("%d\n",*p); 等於97(即ASCII碼的 a 的值),printf("%d\n",*(p+1)); 等於98(即ASCII碼的 b 的值)
④ C語言中的 指針 和 地址的關系
指針保存了某個變數的地址
而指針本身其實也是一個變數,它也有自身的地址,
而指針的內容是某個變數的地址
內存是有地址的,就像每個具體的地方都對應了唯一一個地址一樣
比如我在一張紙上寫了某個地方的地址
這張紙不等於地址,但是通過這張紙,你可以找到這個地方