關於c 指標的問題

2022-05-08 03:36:30 字數 2530 閱讀 1252

1樓:蒙面侍衛

一、int *p=&a;換成int *p;*p=&a;就出錯了,這是為什麼?

答:int *p意思是定義一個指標p。記住,這以後p代表的是一個指標了。因此下一句應該寫為p=&a。

二、另外就int *p=&a而言,&a返回的不是a的地址嗎,那*p不就等於a的地址了?

答:是p等於a的地址。順便說一句,此後的*p中的*號是間接訪問去處符,*p的意思是指標p所指向的變數的值。即*p=a。

關鍵處在於你要區分定義時的*p和定義後的*p不是同一回事。定義後p已經是一個指標,而定義前p只是一個變數名。

2樓:匿名使用者

int *p是給指標定義的,*p表示指標指向的變數,而p指向該變數的地址。

3樓:匿名使用者

int *p是定義一個int型的指標。

可以用&把a的地址取出並賦給p。

但是你先定義了指標p。

*是間接定址運算子。

*p就是一個int型的了。

不能把一個地址賦給他。

4樓:匿名使用者

變數名重複了,有沒有過載,你定義了兩個相同的變數,因該這麼寫

int *p;

p=&a;

5樓:

int *p = &a,&a是一個地址,地址中儲存的內容為a,而*p是一個指標,指向的是這個地址,因此,這個語句中*p指的就是a

而對於int *p;*p=&a,這句話的意思,是指*p這個指標指向的是存放a這個變數的地址,因此,此時p中儲存的是一個地址,這個地址中儲存的又是a這個變數在記憶體中存放的地址

6樓:有錢買不起房子

int *p=&a;

這種方式是定義一個指標變數,並同時初始化

而int *p;p=&a;是2條語句,定義一個指標變數p,在讓p指向a的地址

指標的數值是儲存其他變數地址,*是間接獲取數值的

7樓:匿名使用者

同學,定義語句中int *p=&a; 這兒p前面的「*」是說明p是指標的一個標誌,存放a地址的是指標變數p,而不是*p,*p是地址裡存放的值,也就是變數a的值,是3。

int *p=&a;和int *p;p=&a; 當然是等價的,記住定義時指標變數前的「*」是指標的標誌,而指標變數只是p。

8樓:倒黴熊

int *p; 是宣告一個指向整型的指標,此時*是型別宣告符的一部分,也就是 int * 指明瞭p的型別。

*p;這種形式,代表了其指向地址上儲存的值,例如 int *p = &a; 則 *p與a是等價的,此時*是作為地址解除符使用的。

p是指向地址的,也就是與&a等價。

9樓:匿名使用者

說實話,這內容我忘了。為了回答樓主。我看了下書,總算回憶起來了。

看下面的語句:

int* iptr;

int icount = 18;

iptr = &icount;

這裡涉及到一個型別匹配的問題。

iptr實際是一個地址值。將地址值賦給地址變數肯定沒問題。

*這個符號有間接引用的意思。就是指向這個地址所指向的變數,這變數可能是任何型別。如果第三句是:

*iptr = &icount; 的話,就是把一個地址賦給一個未知型別的變數。所以會出錯。

差不多就這樣吧,我也是半桶水,歡迎樓主與我一起**。

10樓:叫撒名字啊啊啊

朋友,錯誤的原因是這樣的。

首先,*p是一值,&a是一個地址;

在你定義指標的時候,int *p就是一個指標,他是指向某一單元的指標,所以你可以吧&a賦值給他並且不報錯,但是你如果先定義int *p。然後在用*p=&a,那就肯定是錯誤的了。原因是你企圖用一個地址給一個值賦值。

error c2440: '=' : cannot convert from 'int *' to 'int'

這是執行錯誤的提示,你用一個int*企圖給一個int變數賦值,所以是錯誤的。

11樓:匿名使用者

#include

#include

using namespace std;

class teacher

; void teacher::display()teacher::teacher(string t,string n,char s,int a,int te,string ad)

class cadre

; cadre::cadre(string p,string n,char s,int a,int te,string ad)

void cadre::display()class teacher_cadre:public teacher,public cadre

void show()

private:

int wages;

}; int main()

12樓:匿名使用者

int *p;

p=&a;

c語言問題求教 關於指標變數問題

你不知道為什麼會這樣?其實,這個也很好理解的。因為你的p是指向int型資料的,而int型資料在你的編譯器中佔用的是4個位元組,所以你的結果才是 2,而不是 8.就拿你這個程式來說吧。p指向的是記憶體單元1638212。但是p 1指向的確實1638212 4.而不是1638212 1.這是由你的資料型...

c 整型指標賦值的問題,C 整型指標賦值的問題

你好,你應該通過malloc申請空間,或者是用陣列 現在你這樣p i指向的是一個未知空間,可能是系統需要用到的,不允許你更改內容,即使允許你這樣也是不對的,因為這個空間屬於這個程式,用它就是錯誤的。你只申請了一個int的空間,卻操作了256個int,當然不對了 char p abc 是在記憶體開闢4...

關於C 指標

cin.getline就是獲得一個最大長度不超過20個字元的 19或者19以下 的字串,儲存在buffer裡面,這個時候buffer裡面已經儲存了一個字串 例如 abcde 0 因為c字串是以 0結束的。然後,將這個字串傳給函式str的時候 while str1 如果str的內容為0,那麼while...