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語言如何定義一個常量字串 定義 用...