2。首先,妳寫的不對。判斷相等應該是雙等號= =,而不是=,也就是說是p==NULL,而不是p=NULL,p=NULL是賦值,而不是判斷。是把NULL的值賦給p,而不是判斷p是否為NULL。而p==NULL,這不是判斷空間是否有大小,而是判斷這個房間裏存放的東西是否為NULL,也就是說p的值是否為NULL——我在第壹個問題的答案裏說過,空間的大小是壹回事,空間裏放的東西也是壹回事。
3。從上面妳應該看出“*q有大小”的說法是錯誤的。不是“*q”有大小,而是這個地方有特定的值。想必妳說的大小,是指*q已經交了。但是我還有壹個問題要問妳。妳看到的賦值語句是" q= "還是" *q= "?要知道,和星號差遠了!Q=表示已經指定了地址Q,相當於指定房間的鑰匙就放在這個房間裏。而*q=表示這個鍵所指的房間裏有什麽!妳拿到鑰匙和放在房間裏的東西是不壹樣的。
所以我會繼續問下面的問題:妳確定妳看到的是p=q,不是*p=*q,不是*p=q,也不是p=*q?如果妳說確實是p = q,那就好辦了,也就是說妳的房間鑰匙Q被復制了,也就是p,這兩把鑰匙可以開同壹個房間。但是,妳的說法是錯誤的,即P的值等於Q的值,地址就是它們的值。而不是P的地址等於Q的地址,還是那句話,地址相當於鑰匙,家裏的東西叫價值觀。在這裏,P和Q是指針,它們的值是它們房間裏的東西。這個東西,因為它們是地址,所以也是壹把鑰匙,指向另壹個房間。他們的地址是他們自己的鑰匙。
4。當p=q時,那麽*p和*q自然是壹個值,它們相當於壹個房間的兩把鑰匙。自然,*q(相當於Q室的東西)和* P(P室的東西,這不是不壹樣嗎?p和Q同房)。
壹句話:type *指針名(比如int *p),這種語句是聲明壹個指向“type”地址的指針,它有自己的地址,也就是有自己的房間,但是他房間裏的東西是指向聲明類型的某個房間的路標和鑰匙。