C 裡指標變數自身值的問題,關於c 中指標變數的問題

2022-05-08 03:28:02 字數 3130 閱讀 3425

1樓:匿名使用者

&pt=1244996 是pt的地址

*p++ 後 ,*(p++) p++優先順序高,因此 地址變為了 1245000(注意整形指標+1,其實就是+4,因為整形的size是4位元組)

*p=1245064 是地址1245000 對應的記憶體值,是不確定的 。

&p=1244992 ,是p這個指標本身在記憶體中存放的位置,這個也是不確定 的。

2樓:

指標變數的值為記憶體地址值,這個值由作業系統管理。

*p++; //p原來指向pt的,加1後指向了一個未知單元,因此*p的值是不確定的。

3樓:無憂網事

*p 就是 pt啊。

*p++ 就是 (*p)++,也就是pt++

4樓:匿名使用者

*p++;實際是 *(p++);這麼解釋

p指向了pt後的下一個單元,值不確定

要用指標對指向的值字尾遞增應該加括號 (*p)++;

*和++的優先順序雖然一樣,

但字尾自增++是左結合,解指標引用*是右結合所以p先結合字尾++在結合解引用*

5樓:匿名使用者

*p++與(*p)++不同,導致此結果

關於c++中指標變數的問題

6樓:

一、int *i_point=1000;是明顯的語法錯誤。因為,等號左邊是宣告i_point是int *型變數(即指向int變數的指標變數)——這裡一定要注意*不是i_point的而是int的;右邊是不加說明的整數,預設是有符號整數,所以等號左右型別不匹配,連編譯都是過不了的!如果程式設計師想把1000當地址賦給i_point,那得寫int *i_point=(int *)1000;,把1000強制為int *型地址才對。

二、*i_point=3;當然是正確的。因為這條語句中的*前沒有別的符號,它就是獨立的操作符,作為單目操作符時它是取後面變數i_point指向的目標的值的意思,那麼=3則是讓這個i_point指標指向的目標的值=3,顯然是合法的。

*在宣告語句中只是個記號,表示某種變數型別的指標,沒有其他意義,而在其他運算語句中是取值操作符(單目)或乘號(雙目)。掌握這一點,類似問題迎刃而解!

7樓:匿名使用者

int *i_point=1000;這條語句的含義也就是把1000賦值給i_point變數自己!即:把1000當作地址值,賦值給i_point變數

按理論,這裡不會出現語法上的錯誤而出現的應該是執行結果的錯誤!(同意你的看法)

但是有的編譯器可能會做這種檢查,對有這種直接給指標變數賦值常數進行錯誤報警或警告。有的編譯器則忽略這種操作!

8樓:匿名使用者

你在那裡看到的啊?

其實這個語法是對的,只是實際上是不是這樣,那要具體問題,具體分析。

c++指標變數它本身存放在哪?

9樓:物理公司的

指標變數,它是一個變數,而且不管他指向什麼型別,他的大小都是恆定的(4個位元組)。

不要把指標看成什麼奇特的東西,他就是一個普通的變數,只不過他和int型別不同之處在於,他儲存的資訊是一個地址。

至於他本身的地址是怎麼儲存的,你可以問一下自己一個int型的資料的地址是怎麼儲存的。

10樓:可樂不加冰

指標變數的存放,需要了解c++的記憶體機制,一般來說分為堆和棧區,堆區一般是new出來的物件,而指標並非這樣,所以指標可以指向的是堆區和棧區的任意位置。

所以本質上,指標還是存放在記憶體模型中的棧區的。一般棧區小,堆區是棧區的幾倍。但堆區的效率沒有棧區高。

c/c++中指標本身的值和指標指向的值有什麼區別?

11樓:匿名使用者

指標本身pa的值是一個變數的地址&a,而指標pa指向的值是變數a的值,不知道說清楚沒有。

12樓:極天異雲

1.指標本身是一抄個變數,存放的值襲是32位的無符號整數,這個整數是一個32位的地址。

2.通過這個32位的整數地址值,可以找到另外一個資料,就是這個指標指向的資料了,可以是任何了型別的資料。也就是指標指向的值了。

13樓:匿名使用者

指標本身的值是一個地址

指向的值是該地址裡面儲存的值

指標本身的值也是儲存在一個地址中的

14樓:南坪中學校帥

指標本身的值是指標指向值的首地址

char *p="123456"

p指向的是"123456"的首地址 也就是"1"的地址.

15樓:

指標的值是指 指標存放的變數的地址。

指標並不指向什麼什麼的值。

16樓:匿名使用者

指標本身的值是它所指向的變數在記憶體中的地址 。指標指向的是你的資料或者操作。

17樓:匿名使用者

指標本身的值是它所指向的變數在記憶體中的地址

c++中一個指標為什麼不能指向自己本身

18樓:獅子東東

直接定義即可。比如已有一個類class a, 再定義一個類class b,這樣在b的定義中,就可以有一個a*型別的成員變數。 比如 class b ; 這裡的b::

a就是一個a*型別的指標。 需要注意的是,要使用這種形式的定義,要麼a的定義在b的上方

19樓:

指向自己還用指標有什麼意義。。。

c\c++指標變數怎麼賦值給普通變數。

20樓:

指標變數指向的是一塊記憶體區域,是一個記憶體地址,我們要的其實是指標變數指向記憶體區域地址的內容,我們可以用去內容作用符int *p = new int; int i= &p;可以取出指標指向記憶體區域的內容,然後將取出的內容複製給普通變數,但是指標指向區域內容要與普通變數的內容匹配。

21樓:風雲之歌

強制轉換為整形。

int *p = &a;

int addr = (int) p;

c語言中變數指標輸出問題,C語言中變數指標輸出問題

這和printf用 s的規則相關。首先ps是一個指向字元型資料的指標 printf用 s修飾輸出時需要提供一個指標,這個指標指向的資料是字元型的,但printf將按照字串的規則來進行輸出,也就是輸出完這個指標指向的字元後,自動將指標加1,並判斷指向的字元是否為0,否則將輸出直至指向的資料為0為止,或...

關於c子類繼承的this指標的問題

cout d 我想應該是初始化順序吧 首先 cb類 初始化 基類 cd,這時候還並不知道派生類的 b 所以會報錯 初始完基類以後才會初始化自己,這個時候才會有成員 b 首先你要明確一點,this指標屬於某一具體物件,cb cb定義時,this指標屬於cb,可以呼叫cb的資料和函式成員,cd cd定義...

c指標的問題

首先,在指標定義時規定了ip是一個指向整形的指標,但是int ip 3 這句話讓ip指向3號地址塊,但是3號地址塊裡的內容是不確定的,所以是錯誤的 int ip 3 是不是這一步驟有問題?指標初始化不能這樣幹!include void main 這就對了。這時候ip指向a,而原先ip是指向3,而3是...