① c語言中指針佔多少個位元組
指針占慧沖位元組數和編譯器有關.
如果是16位編前渣殲譯器,那麼指針佔2位元組.
如果是32位編譯器,那麼指針梁辯佔4位元組
如果是64位編譯器 那麼指針佔8位元組.
即 指針位數和編譯器位數相同.
② c語言中如何給指針賦32位地址
int *P;
P=(int *)0xf000;
你定義的p就是指向int型數據的,所以編譯器不提示錯誤或判信息
char *p=NULL;
p=(long *)0xf0000;
此時你定義的p是指向char型的,而你又讓他指向long型的
編譯衫念改器顯示:error C2440: '=' : cannot convert from 'long *' to 'char *'
也就是認為你賦值錯誤
有什麼必要對指針這樣直接進行物理地址高旅的賦值嗎?
如果這個物理地址直接指向關鍵內存區,可能導致系統的崩潰
建議不要這樣使用
③ C語言里指針指不論指向任何變數它自身都只佔4個位元組為什麼
對啊
指針是存放地址用滴。。
打個比方,你要寄一封信,得寫郵政編碼吧。。
現在咱中國都用6個數字來代表一個閉源隱縣。。
好嘞,明白了吧,你聲明一個指針的過程就相當於要一個信封,讓指針指向變數的過程就像在信封上寫上郵編。。讓它來指向一個縣。
至於你轎廳問為啥指針總佔4個位元組,就相當於在問我國郵政編碼怎麼是6位啊。。
因為是特么國家規定的。。無論你的郵編指向哪個縣(對應指針指裂液向變數),信封上的6個框框總不會變把。,
④ 32位和64位系統中為什麼指針都是4個位元組的長度
32位和64位系統中,編譯器為了相互兼睜此容枯察,所以指針都是4個位元組長度。
位元組(Byte /t/ n. [C])是沒早茄計算機信息技術用於計量存儲容量的一種計量單位,也表示一些計算機編程語言中的數據類型和語言字元。
⑤ 32位編譯器上 char *str1 = 「Hello」,str2[]=」Hello」;
字元串指針型變數的實質是指針早氏答,而不是字元型變數,和是不是首地址無關。所以sizeof的結果就是指針陸慧變數的大小,在32位上是4位元組,在64位上是8位元組。
如果想知道字元串的核搭大小,可以採用strlen函數。
⑥ 指針的大小到底是由誰決定是多少
指針大小和機器字長相同,即32位機指針長脊渣度為4位元組。
使用指針來讀取數據,在重復性操作的狀況下,可以明顯改善程序性能,例如在遍歷字元串,查取表格,控製表格及樹狀結構上。對指針進行復制,之後再解引用指針以取出數據,無論在時間或空間上,都比直接復制及訪問數據本身來的經濟快速。
一般出現在比較底層的程序設計語言中,如C語言。高層的語言如Java一般避免用指針,而是引用。
(6)編譯器32位指針擴展閱讀:
對指針進行初始化或賦值只能使用以下幾種類型的值:0 值常量表達式,例如,在編譯時可獲得 0 值的整型 const對象或字面值常量 0。類型匹配的對象的地址。另一對象末的下一地址。同類型的另一個有效指針。
增加節點操作,往往考慮到刪除根節點,增加咐瞎的節點取代櫻簡悄原來的根節點作為新根節點的情況。為了修改根節點這個「整數」,我們需要退一步,使用這個「整數」的內存地址。
⑦ c語言指針的疑問
1、通常一個指針,全部32位都用來表示地址了;編譯器在編譯過程中會為變數建立相關表格,保存有變數類型的信息;執行時候CPU是不管它是什麼類型的
2、和變數類型有關;靜態數據初始化為0;局部變數不確定。
3、b 本信核身的地址 和 b 這個指針變數保存的地址不是一個概念。舉例來說,b是一個容器,它有自己的存放位置,容器裡面存放的是伍高a的位置。滑橘掘