具體的 P的意思

2021-04-12 22:35:52 字數 1725 閱讀 9705

今天在看程式的時候就發現乙個問題,就是我的另外的一篇文章裡面的乙個程式,就是那個發生段錯誤的程式裡面的。

裡面的一句就是給head初始化:struct film *head=null,而下面的對head的引用就是這麼用的:if(head=null),我就想了初始化應該是把整個值(*head)都給初始化了啊,怎麼是head啊,網上找一下就是了,其實很多的,牛人真的是多!

下面是我找到的人家的,用的是c++實現,其實很簡單,先看看吧。

int *p = null; char *p = null; 的問題

問題:void  main() 

輸出結果為: 

0x00000000 

0x0012ff7c 

void  main() 

輸出: 

報錯!中斷!

原因:cout    <<  p <<  endl; 

對於:   

int  *p; 

//cout    <<  p;  輸出的是p指標所指向記憶體單元的位址(當為int  *p  =  null;時,p值為0) 

而對於型別為: 

char  *p; 

//  cout    <<  p;  輸出的是乙個字串,並不是p指標所指向記憶體單元的位址,  當為char *p  =  null;時,p值為0在c語言下面兩者是一樣的,c++下面二者輸出p的含義不一樣。 

如何獲得  char  *p  =    "test  ";中字串「test」的位址呢?  &p為指標在堆疊中的位址,cout    <<  p;又不能輸出  "test  "的位址,

方法:cout    <<  (int)p;

再看乙個例子:

我自己編寫的乙個程式:

#include

int main()

一般的資料型別包括struct在內,如果直接賦值*head=null那麼就是給head賦值,注意了head是值,而不是(*head)的值。而這樣的初始化是賦初值,也是位址初始化吧。

記住一點,永遠不要給沒有初始化的指標賦值,指標的建立的時候賦值,使用的時候直接賦值的結果是很恐怖的,再看乙個程式:

#include

int main()

根本就沒有辦法除錯,會提示資訊,5 c:/code/1.c [warning] initialization makes pointer from integer without a cast ,但是可以通過除錯,執行一下就是錯誤的,這就對了,(*p)這種引用根本就是不對的,再看乙個程式:

#include

int main()

#include

int main()

就可以了,結果是:2293620,55從這裡可以曉得,對於指標的引用就是p(q)而不是(*p)。

1:可以在定義的時候:int *p=55,這個是賦初始值?這個是不對的,給指標賦值案下面2說的進行,也可以按照上面的給a的位址&a,可以用常量的位址不啊?不行的,比如&(55),我的理解是常量沒有位址;

3:對char *p=null可以用,但是引用p不出問題,引用*p就出問題那是因為在給p給定了0位址,卻沒有給值,自然會段錯誤,可以直接附乙個確定的字串,char *p=「adfdf」;使用*p得到的是a字元,這個在一般書的比較陣列和指標的部分都有講,而printf("%s/n",p);得到的是字串,printf("%d/n",p);得到的是頭位址。

4:對struct  film *p=null;就是p=null,不是(*p)=null

xzvf的具體意思

x 解壓 z gzip壓縮格式 v 顯示詳細資訊 f file.tar 的引數.man一下.tar zxvf 目標壓縮包 z 將要解壓的包壓縮格式為 gzip格式 x 要執行的是解壓動作 與壓縮 c 相對 v 顯示解壓過程中的資訊 f 代表file 固定要帶的.也可以理解為有檔案要建立 解壓或者壓縮...

CI的具體意思

ci是英文corporate identity 的英文縮寫,直譯為 企業形象規範體系 這是指乙個企業為了獲得社會的理解與信任,將其企業的宗旨和產品包含的文化內涵傳達給公眾,而建立自己的視覺體系形象系統。ci由mi 理念識別系統 bi 行為識別系統 vi 視覺識別系統 三部分組成。如果說傳統企業 的是...

CI的具體意思

ci是英文corporate identity 的英文縮寫,直譯為 企業形象規範體系 這是指乙個企業為了獲得社會的理解與信任,將其企業的宗旨和產品包含的文化內涵傳達給公眾,而建立自己的視覺體系形象系統。ci由mi 理念識別系統 bi 行為識別系統 vi 視覺識別系統 三部分組成。如果說傳統企業 的是...