定義指標變數時候2種寫法有什麼區別intp和intp

時間 2021-09-11 22:29:10

1樓:匿名使用者

這兩種寫法的功能沒有區別。

這個程式出錯是因為你沒有為p分配空間,所以5就無處可放,所以出錯:

#include

#include

int main()

------------------------------------------

附:網友「loveqzl」的說法是不正確的,這兩種寫法的作用是一樣的,只不過第一種用法會使程式設計師產生一種錯覺,錯誤地認為int*是一種資料型別,這種認識就會使其寫出類似「int* a,b」這樣的指標定義語句,但是這樣做,b就不是乙個指標,而是乙個int變數

******************************************

80407003

2樓:月夜儛

這兩種定義方法是一樣的吧

printf("%d\n\n",*p)應該是printf("%d\n\n",&p);

3樓:匿名使用者

樓上的說的很好,建議大家養成int *p,*q這種習慣,如果int*連寫的話,容易犯int* p,q這樣的錯誤.

4樓:匿名使用者

沒有區別

int* p 是c++寫法

int *p 是c寫法

int *p;

只是乙個指標 你沒有用他指向任何位址的時候不能附值比如:

int q;

p = &q;

*p =5;

就沒問題了

連續宣告多個指標的兩種寫法

int* a;

int* b;

orint *a,*b;

(參見c++primer p102)

5樓:軒逸草

int* p和int *p 寫法沒啥區別,不過我們習慣上用 int *p

下面我重點給你講一下你的程式出錯的原因吧!

int* p=null;在stdio.h標頭檔案中就有對null的定義,它是乙個符合常量,就是整數0.故該語句表示p初始時不指向任一有用的單元。

所以如果你想用語句*p=5; 給p所指單元賦值的話,可以先定義乙個int型的變數如a,然後讓p再指向a(即p=&a;),這樣你的程式就ok啦!

再有一種麻煩點的改正方法,就是使用分配記憶體空間函式malloc,其呼叫形式是:

(型別說明符*)malloc(size)

其功能是:在記憶體的動態儲存區中分配一塊長度為「size"位元組的連續區域。函式的返回值為該區域的首位址。

(型別說明符*)表示把返回值強制轉換為該型別指標,「size"是乙個無符號整數。

6樓:

了解了 原來是寫法區別

7樓:考陣

汗,int* p和int *p

簡直是兩個事情啊!

乙個是宣告都錯了,

第二個才是正確宣告:-)

定義了結構體,結構體有個成員變數是指標型別,而這個變數有是結構體,請問怎麼對這個指標初始化

例如有a,b兩個結構體,a中有b 在main中需要先初始化個b,完成b之後,然後呼叫a.b,這樣就可以完成了!如果直接呼叫a的話,有可能溢位 沒賦具體值時都給null就好 struct a a struct a malloc sizeof struct a memset a,0,sizeof str...

自變數,因變數,因變數有多個指標,用什麼分析方法分析自變數與這些維度之間的關係

可以做因子分析.首先,先將a1到an用提取主成分分析的方法,形成乙個因子,同理,對b項做同樣處理.其次,再在因子的層面上對兩個因子單變數方差分析 當然,如果存在多個自變數因子和多個因變數因子,可以用多變數方差分析 最後,如果想考察兩者的線性的數量關係,可以再做回歸分析.因子分析的步驟 選單欄 分析 ...

指標變數和指標常量有什麼區別,如何辨別

紅領巾飄過 指標常量是乙個位址,指標變數是用來儲存指標常量的乙個變數。我們通常說指標是指指標變數。 指標變數可以改變指標指向的位置,而指標常量初始化之後就不能改變指向的位置 指標常量是指標所指向的位置不能改變。指標變數,可變。至於如何辨別,在於宣告! 指標變數就是可以變的,常量就是不可以變的 如果乙...