c語言中p什麼
Ⅰ c語言,int *p=G 中的p是指什麼
c語言中
int *p=G;
這句話的作用是:
①聲明一個指向整型數據的指針變數p(簡稱「指針p」);
②並把變數G的地址賦值給p(這個賦值的過程在更多的時候被稱為「讓指針p指向整型變數G」。
回答你的問題:
(1)p是一個特殊的變數;
(2)p中只能存放地址(又叫指針);
(3)p中只能存放整型變數的地址(也叫整型指針);
(4)所以,p是一個整型指針變數(或整型變數指針);
(5)p的值是變數G的地址,即p==G;
(6)我們可以用下面的運算得到與p相關的其他量值:
&p--得到變數p的地址;
p--得到變數G的地址;
*p--得到變數G的值,*p==G。
Ⅱ c語言中 !p 是什麼意思
意思:使當前指針指向鏈表的下一個結點。
一般作用在數據結構中的單鏈表裡由應用,語句中的p一般指向一個結構體類型的數據,此類型的數據通常表示節點;結構體里存放的一些數據和記錄下一個節點地址的指針變數next;這個next就好比鏈條一樣,連接著一個個節點。
->是一個整體,它是用於指向結構體、C++中的class等含有子數據的指針用來取子數據。換種說法,如果在C語言中定義了一個結構體,然後申明一個指針指向這個結構體,那麼要用指針取出結構體中的數據,就要用到「->」.
(2)c語言中p什麼擴展閱讀:
舉個例子:
struct Data
{
int a,b,c;
}; /*定義結構體*/
struct Data * p;/*定義結構體指針*/
struct Data A = {1,2,3};/*聲明變數A*/
int x;/*聲明一個變數x*/
p = &A ; /*讓p指向A*/
x = p->a;/*這句話的意思就是取出p所指向的結構體中包含的數據項a賦值給x*/
/*由於此時p指向A,因而 p->a == A.a,也就是1*/
對於一開始的問題p=p->next;這應該出現在C語言的鏈表,這里的next應該是一個與p同類型的結構體指針,其定義格式應該是:
struct Data
{
int a;
struct Data * next;
};/*定義結構體*/
main()
{
struct Data * p;/*聲明指針變數p*/
p = p->next;/*將next中的值賦給p*/
}
Ⅲ C語言中*p和**p有何區別
一、表示的東西不同
*p表示p代表相應數據類型在存儲單元中存儲的首地址,而這個存儲單元存儲的是相應類型數據的數值。
**p表示p也表示地址,簡單的說,這個地址對應的存儲單元存儲的數也是一個地址,而不是數值,而這個被存儲的地址對應的存儲單元存儲的數據才是真正的相應類型的數值。
二、基類型不同
例如int *p1,**p2;
兩者本質上都是指針,但是兩者的基類型不同。p1的基類型是int,換句話說p1指針指向的是int型的數據,而p2的基類型是int *換句話說p2指向的是指向int型數據的指針,即指向指針的指針。
三、用法不同
例如int *p;
那麼p就是指向int類型變數的一個指針。(即數組)
如果int**p;
那麼p就是指向int*類型指針的一個指針。(即指向一維數組的指針,即二維數組)
Ⅳ c語言中,p.和p->有什麼區別
p. p是類的對象,點後面要跟類中的元素,這樣就完成了類裡面元素的調用,元素可以是變數也可以是函數。
p->是傳地址,比如說有另一個變數a,你p->a就把p的地址也給a了