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

2021-03-07 05:51:10 字數 2804 閱讀 3495

1樓:海天盛筵

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(即地址)是通用的指標,即主要指的是右邊的針,持有一級指標變數指標變數。

2樓:四舍**入

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

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

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

3樓:leap灬『躍

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

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

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

4樓:春風不醉人

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

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

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

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

5樓:

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

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

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

6樓:***x櫻

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

不可以直接*p=5

7樓:無言de結局

c的話定義之後是隨機值

c語言中,一個指標佔用的空間是多大?和指標型別有關係嗎?

8樓:

指標和其指向的資料型別有關係,你可以用sizeof()來做測試:

printf("the size of char is %d\n",sizeof(int*));

printf("the size of char is %d\n",sizeof(char*));

另外,指向結構體的指標就要看具體情況了,c語言還有所謂的「對齊機制」,就是結構體裡的單元,所分配的空間實際上要參照結構體裡「體積」最大的那個單元。就是說,比如一個char和一個int,char要向int看齊,一個char和一個double,char要向double看齊。關鍵就在於湊整數,湊成最大變數大小的倍數。

當然,如果結構體裡只有char型的變數或是陣列,就不存在一定要湊數的問題了。

9樓:匿名使用者

2位元組,宣告為far時為4位元組

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

10樓:黑暗聖騎士

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

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

11樓:柒夜半

當然分配記憶體了

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

c語言定義一個結構體指標變數跟定義該指標變數之後再呼叫malloc為其分配記憶體之後有什麼不同? 150

12樓:

你的「分配bai記憶體」

的概念du有點問題——不是用malloc為某zhi個指標分配dao了記憶體,而是先用

專malloc分配了記憶體,再將屬

13樓:

其本質實是沒有區

bai別的。

都是這du種型別的指標。

唯一zhi的區別在於。p1不指

dao向任回何地址。p2指向了答某段有效的記憶體。

連結串列中,定義一個指標,是為了讓其記錄下首地址,遍歷完成後,head依然是head,不然的話,你用head去遍歷,到最後 你就只剩下一個節點了 。 防止記憶體洩漏。

c語言中關於指向陣列的指標C語言中關於指向陣列的指標

char str 100 char pi str 相當於char pi pi str char ppi pi 這個地方抄錯了。應為char ppi pi 定義加 表明這是指標型別的變數 用的時候,就是用的指標,加 幹什麼。只有取指標所指變數的值,或給指標所指的變數賦值的等涉及指標所指的變數的時候,才...

c語言中用指標的好處有哪些C語言中指標的作用是什麼?

指標非常的好,它把相同的事物歸類,然後把事物做出標記,避免給相同的特點做變數。比如說你和你同學,你們兩個人都有心臟 肝 肺等器官,如果命名心臟1 心臟2這樣比較麻煩,這時如果用上指標,指向你說心臟時說的是你的心臟,指向你同學時說的是你同學的心臟,如果人非常的多,你不用指標,那麼命名心臟1 2 3 4...

c語言中是如何定義常量的翱,C語言中是如何定義常量的啊?

c語言定義常量常用的方法有以下2種 第一種 巨集定義 define n 3 定義了一個常量為3的巨集n,在程式中n就代表3 第二種 給變數初始化賦值 int a 2 定義了一個int型變數,並賦值為2,其實這是用變數來定義常量 注 定義常量還是用巨集定義的比較多。c語言如何定義一個常量字串 定義 用...