1樓:
指標變數的值是個地址, 他所指向空間中的內容是個具體的數值,兩個完全不同
c語言的指標部分 *p與p區別
2樓:楓璽
c語言的指標部分 *p與p區別如下:
1、作用不同
*p表示此指標指向的記憶體地址中存放的內容。
p是一個指標變數的名字,表示此指標變數指向的記憶體地址。
2、輸出內容的格式不同
*p常用在一個和指標型別一致的變數或者常量。
p輸出一個指標的地址,通常是輸出一個16進位制的數。
3、效果不同
*p是讓編譯器從指定的地址中讀取出資料。
p是用來存放要讀取資料的地址。
擴充套件資料c語言中使用指標的作用:
1、指標使程式的不同部分能夠共享資料
類似於共享記憶體,如果將某一個資料值的地址從一個函式傳遞到另外一個函式,這兩個函式就能使用同一資料。
2、利用指標,能在程式執行過程中預留新的記憶體空間大多數情況下,可以看到程式使用的記憶體是通過顯式宣告分配給變數的記憶體。但是在很多應用場合中,可能程式執行時不清楚到底需要多少記憶體,使用指標可以讓程式在執行時獲得新的記憶體空間,並讓指標指向這一記憶體更為方便。
3、指標可以用來記錄資料項之間的關係
在高階程式設計應用中,指標被廣泛應用於構造單個資料值之間的聯絡。比如,程式設計師通常在第一個資料的內部表示中包含指向下一個資料項的指標(實際上就是連結串列了),來說明這兩個資料項之間有概念上的順序關係。
3樓:匿名使用者
p是指標變數,其值是一個變數的地址。p收到了哪個變數的地址,就指向哪個變數。該變數成為p的物件。
*p是p所指向的物件的值。
例如:int i=3,*p;
p=&i; 注意:p收到i的地址,故p指向i,i是p的物件
printf("%d,%d\n",i,*p); 輸出:3,3 注意:*p是p所指向的物件的值,即i的值。
祝學業進步!
4樓:匿名使用者
我舉個例子吧:
int k = 5;
int *p = &k;
這時*p就表示k的值5,而p表示的就是k的地址
5樓:龍嘯天風
賦值的時候*p表示這是一個指標,p表示是一個數
而用的時候如果p是一個指標,那麼*p表示所指向的內容,p本身存著一個地址。
6樓:鏡面世界
呃⋯⋯第二個前面無運算子相當於p,有運算子且p是函式名或函式指標時,加括號相當於p,不是則無意義,p是函式名且返回指標且是呼叫時,不加括號是返回的指標的間接引用,第一個p不是指標的話無意義,如果是指標(什麼指標都行,包括函式指標等不常用的,但不能是野指標,執行時會報錯),如果這個表示式前面是運算子號,相當於p,如果前面是另一個表示式,是*p與那個表示式位與,p是函式指標時加括號相當於p,p是函式指標或函式的二級指標且該函式返回引用時是返回的引用的記憶體地址。(呼!累死我了,給個滿意啊!
看不懂的話等我有時間弄個**)
7樓:匿名使用者
int pp=5; //開闢4位元組記憶體給pp,其中存放的是5的二進位制值;
int *p=&pp; //開闢4位元組記憶體給p,其中存放的是pp的地址值(只有定義成int *型別的才能存放地址值);
8樓:言玉甚人
p中放的是地址
int a=321;
int *p=a;
其實a是一個地址的別名,這樣方便人們識別;
p也是一個地址,並且儲存空間中的這個地址中放的是變數a即321這個數在儲存器中的地址,而「*」的作用就是將p這個地址中存放的數所代表的地址中所存放的資料。
9樓:顛兒父
int a = 1; // 記憶體中a有一個地址比如:
0x11 中存的值是 1
int *p = &a; // 記憶體中p有一個地址比如:0x22 中存的值是 0x11
p的值是0x11, *p的值是1
10樓:匿名使用者
*p是指標,裡面存的是裡面存的地址的數,p存的是地址
定義指標時指向不同型別的指標變數有什麼相同和不同之處
11樓:岔路程式緣
相同之處:(1)指標的名字元合變數起名規範,如a、bw1、g_as、_jk6cx等,都可以作為指標名字,而不用管它是指向哪種型別的指標。(2)宣告時,都要在指標前面加一個*。
不同之處:宣告時,不同型別指標的要用不同的型別說明符。如指向整型變數的指標用int宣告,指向字元或字串的指標用char宣告,指向浮點型數字的指標用float宣告等等。
一些例項:
char *str;
int *p_2;
double *point1;
c語言中,當指標指向變數後,指標的值改變了,變數的會變嗎?如果變數的改了,指標的也會改嗎
指標的值改了復 你是說指標裡面 制儲存的地址改了還是指標指向的資料的值改了.前者會讓指標指向另一個地址,後者會改變對應記憶體地址的值.變數的改了 指標本來就是指向一個記憶體地址的.你指的 指標的也會改 是說指標指向的值也會改,確實是這樣.對指標進行解引用之後的操作相當於對變數本身進行操作,獲取值時亦...
C語言裡指標指不論指向任何變數它自身都只佔位元組為什麼
指標存放復的是記憶體地制址.記憶體地址多少位,是由編譯器決定的.編譯器如果是32位的,那麼地址就是4位元組.如果是64位的,那麼就是八位元組.不會因為存放資料型別的不同而變化.就像家裡的門牌號,不管家裡住多少人,是別墅還是平房,門牌號都是街道統一規定的.指標存放的是一個記憶體地址,32位系統中一個地...
C 中可以通過指標來修改他所指的物件的值嗎
在c中記憶體,可以劃分為三種,堆 棧和靜態儲存區。棧就是auto變數存放區域,自動釋放,在編譯時候需要知道空間大小。堆一般用作開闢動態儲存區,需要人工開闢,人工釋放,可以在執行是開闢。比如說c中的malloc和free函式,還有c 中的new和delete。還有就是靜態儲存區,這個區域存放一些常量,...