在c語言中,定義了指標變數就分配了記憶體空間嗎

2021-03-03 21:31:17 字數 1897 閱讀 9355

1樓:黑暗聖騎士

當然有空間啦!!比如*p;*是指標的代表p 是地址

!!希望你採納!!作圖不容易呀

2樓:柒夜半

當然分配記憶體了

只不過此時這個指標的指向未定義!

c語言中,定義一個指標的時候為這個指標開闢儲存空間嗎?

3樓:海天盛筵

int*p:第一級指標,表示p點所在地址是一個100int型別的值,p被宣告為一個指向整數的指標,並且為這個指標分配了儲存空間。但在這種情況下,它是一個隨機數,我們稱之為指向一個不確定的記憶體地址。

當使用者說「direct*p=5」時,在一個不可預知的記憶體地址上寫入一個整數5。這是不允許的,並可能導致程式崩潰。

p = & a;然後,將現有變數a的地址寫入指標p,我們說指向a的指標可以通過變數p對變數a進行正常操作。

擴充套件資料:

指標:指標的表示法是地址,核心是指向關係的指標,操作符「*」的作用是根據關係訪問所指向的物件。如果版本與b有指向關係,則a為b的地址,「*a」表示通過該指向關係間接訪問b。

如果b的值是一個指標,它指向c,bc地址,間接訪問,cb「*」如果c是整數,真實的,或結構,如型別變數或陣列元素對於這些型別的資料,bc(即地址)是通用的指標,即主要指的是右邊的針,持有一級指標變數指標變數。

4樓:四舍**入

int *p :一級指標,表示p所指向的地址裡面存放的是一個int型別的值,宣告p為指向整型數的指標,這時為這個指標分配了儲存空間。但這時其中是隨機數,我們稱它為指向一個不確定的記憶體地址。

使用者說的「直接*p=5」,那麼就會在一個無法預知的記憶體地址寫入一個整型數5。這是不允許的,可能導致程式崩潰。

p=&a; 則是把已有的變數a的地址寫入指標p,我們稱使指標指向a. 可以通過p對變數a正常操作。

5樓:leap灬『躍

記憶體都是用地址編好了每一」格「的,一個地址對應一「格」,定義一個指標時,系統為指標隨機賦一個記憶體大小範圍內的地址,所以該指標肯定指向記憶體的某一「格」。如果沒對指標進行賦值便使用(如p->next之類的),一般情況下在windows中執行時會提示非法訪問記憶體,然後程式崩潰(除錯時經常出現的情況),如果其他作業系統沒有這樣保護的話,可以使得指標任意訪問記憶體,這是非常危險的,所以儘量別出現野指標。

1、因為定義的指標已指向一個地址,所以可以*p=5;

2、定義指標時並不是開闢記憶體空間,指定指標型別主要是為了在 *p 訪問指標指向內容時可以確定怎樣讀取這塊連續的記憶體(例如int與long所佔的位元組是不同的)

6樓:春風不醉人

呵呵,這個問題不會太糾結:

在定義 int *p 時,系統隨機給p一個值,其對應記憶體中一處空間,並非為空(不信可以自己試試,當你不對p賦值時列印*p,這是有輸出的);

讓p = &a; 這是為p 賦初值,讓p指向程式設計師指定的地址(之前是隨機的,非為程式設計師指定的),它原來的記憶體空間仍然存在,且這不涉及釋放不釋放的問題(只在動態申請時存在釋放的問題);

不知我說的是否清楚,o(∩_∩)o~

7樓:

int *p; 宣告p為指向整型數的指標,這時為這個指標分配了儲存空間。但這時其中是隨機數,我們稱它為指向一個不確定的記憶體地址。

如果象你說的「直接*p=5」,那麼就會在一個無法預知的記憶體地址寫入一個整型數5。這是不允許的,可能導致程式崩潰。

p=&a; 則是把已有的變數a的地址寫入指標p,我們稱使指標指向a. 可以通過p對變數a正常操作。

8樓:***x櫻

**都不指,記憶體裡是隨機值

不可以直接*p=5

9樓:無言de結局

c的話定義之後是隨機值

關於c語言中字串指標變數的問題

樓主你好 字元指標ps賦值後是字串 this is a book 的首地址 也就是說此時ps指向第一個字元 t ps就是 t n 10 ps ps n 就是使指標ps指向字串 this is a book 的第11個字元 也就是 b 那麼printf s n ps 就是輸出以ps為首的 以 0 結束...

如何在c語言中定義及引用全域性變數

1 全域性變數也稱為外部變數,它是在函式外部定義的變數。它不屬於哪一個函式,它屬於一個源程式檔案。其作用域是整個源程式。在函式中使用全域性變數,一般應作全域性變數說明。只有在函式內經過說明的全域性變數才能使用。全域性變數的說明符為extern。但在一個函式之前定義的全域性變數,在該函式內使用可不再加...

c語言中指標佔多少個位元組,在C語言中一個指標佔用多少位元組。

一個指標變數在記憶體中佔兩個位元組 small模式編譯 一個指標變數在記憶體中佔四個位元組 32位機器上 一般都是32位機器的,所以四個位元組咯。指標佔位元組數和編譯器有關.如果是16位編譯器,那麼指標佔2位元組.如果是32位編譯器,那麼指標佔4位元組 如果是64位編譯器 那麼指標佔8位元組.即 指...