c語言指針的地址
1. c語言裡面的地址是什麼意思,指針指向一個變數的地址
C語言裡面的地址實際上就是一個內存單元的編號,計算機一般是以一個位元組為最小的存儲單元的,每個位元組就給它編一個編號,這個編號就是這個位元組的地址,這個編號也就是地址是具有唯一性的。指針指向一個變數的地址,這個類似於,通過知道房間號就可以確定這個房間的具體位置是一樣的道理,這個房間編號就是房間的地址。
2. C語言中,指針指向的地址.那個地址是什麼地址
那個地址 是被指向的變數的地址。
當指針剛聲明完畢時,它並無指向的地址,只有當指針與 某有存儲地址的變數發生聯系時,才有指向地址。
例如:
int *p; // 這時 p 沒有指向地址
int a=3,b=14;
p = &a; 這時 p 指向了 變數 a 的地址了.
// 數值 *p 等於 a 里存放的數值。 printf("%d", *p); 得 3。
這時,若 a = a+1; 輸出 printf("%d", *p); 得 4。
p = &b; p 指向了 變數 b的地址 了,輸出 printf("%d", *p); 得 14 啦。
3. 問一個關於C語言指針地址的問題
1、
&a是取a變數的內存地址,把這個地址值存入b變數邏輯上是沒有問題的。
但存地址有專門的存地址的箱子的類型(int*),b是存整數的箱子類型(int)啊,所以應該進行顯式(強制)類型轉換,變成:
1 int a=100;
2 int b=(int)&a;
2、
在定義變數語句中的int *b和表達式中的*b確實不代表同一個意思。int *b中的*和int一起代表一種整型的指針類型,你可以將int*作為一個整體來理解,它表示一種類型。表達式中的*b才是做指針運算的,表示取出b的值所表示的地址中的值(b所指向的地址中的值)。
4. c語言中,指針和指針地址的問題。
第一次列印出來的是數組的首地址,第二次列印出來的是指針p自己的地址;指針p的本質其實也是一個用來存放地址的變數,那麼既然是變數總會有地址,採用&p列印出來的就是它自己的地址。而二級指針(指向指針的指針)的本質是一個用來存放指針地址的變數;
比如int
*p;//指針;
int
**pp
=
&p;//指向指針的指針;
*pp與p是等價的
5. 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 的值)
6. c語言怎麼輸出指針地址
比如說一個int a,想要輸出a的地,對a 直接取地址就行&a
如果有一個int型的指針int* a,則a本身就是地址,而*a表示在該地址下存儲的內容
7. 關於C語言指針 地址 位元組的問題
int型在編譯器里是4個位元組,你定義一個int型的指針,這個指針指向的就站4個位元組,
變數i也佔4個位元組,因為他是整形,所以4個位元組,這4個位元組里放的是0或者1,也就是4的二進制。佔4個位元組的地址
p指向i,是的,p就是i4個位元組中的首地址,4是存放在以這個首地址連續的4個位元組中,1個位元組8位,第一位代表符號,0代表正數,1代表負數,1個位元組表示的數的大小限制比較小,4個位元組表示一個數就可以表示比較大的數,1個位元組最大的正數是2的7次方-1,4個位元組就是2的31次方-1.
8. C語言指針指定地址
首先,不能這樣做,你c語言操作的地址並不是真實的地址,是操作系統從內存的某一段虛擬給你的地址,每次都不一樣,每個程序所使用的內存互不幹擾。
第二,而你的程序退出後,所擁有的空間就被系統全部回收了。也就不存在了。否則,你c語言亂改一通,要是改到系統正在用的內存,系統不就出現異常了嗎。內存並不是由你管理的,而是操作系統管理的。
假設 a程序的 p指針,指向 0xaaa地址 ,你修改 b程序的 p指針,指向0xaaa,也是無法修改的,每個程序的內存都是系統虛擬的。保證程序可以安全穩定的執行。
9. 關於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:如果覺得我的答案能回答你的問題,請採納,謝謝~
10. C語言中的 指針 和 地址的關系
指針保存了某個變數的地址
而指針本身其實也是一個變數,它也有自身的地址,
而指針的內容是某個變數的地址
內存是有地址的,就像每個具體的地方都對應了唯一一個地址一樣
比如我在一張紙上寫了某個地方的地址
這張紙不等於地址,但是通過這張紙,你可以找到這個地方