#include<stdio.h>
int main()
{
int a=5,*b,*c;
b=&a;
c=b;
*b++=*c++;
printf(" %d %d %d\n",&a,b,c);
}
這裏如果a的地址是x,則b和c的值都變爲x + 4。但是不應該由兩個++運算符增加至少一個值8c中遞增指針
#include<stdio.h>
int main()
{
int a=5,*b,*c;
b=&a;
c=b;
*b++=*c++;
printf(" %d %d %d\n",&a,b,c);
}
這裏如果a的地址是x,則b和c的值都變爲x + 4。但是不應該由兩個++運算符增加至少一個值8c中遞增指針
不要混淆指針的值與它指向的值到。
表達式*b++
表示:檢索b指向到的值,然後遞增b的值。
您應該使用%p
來格式化指針值,而不是%d
。
您在此處所做的只是通過指針將a
的值設置爲自身。請注意,b
和c
在增加後可能不會被解除引用(因爲它們指向單個值而不是數組)。
需要注意的是,如果你想增加的實際值,必須使用括號:
(*b)++;
這將間接引用b
並增加價值。如果你沒有括號,那麼它會增加指針,然後解除引用原始值。
請記住這一點
* B ++這意味着,b爲指向某個整數和整數值是由1 incrmented不是2,因爲它可能會出現在你面前有兩個+ signs.And如果您想要打印指針,你應該使用%p格式說明符而不是使用int。
不,在'* b ++ ','b'遞增。 –
不,「b」和「c」是獨立的。 – StoryTeller
爲什麼你認爲它會增加八個? – templatetypedef
打印這樣的指針不是一個好主意。 –