C --*--指针操作?
在下面的节目中,C --*--指针操作?,c,pointers,C,Pointers,在下面的节目中, int main() { char a[] = "azmruf"; char *ptr = a; ptr += 5; //Now ptr points at 'f' printf("%c", --*ptr--); //e got printed. Bcos of post increment now ptr in u. printf("%c", *ptr); // so 'u' got pri
int main()
{
char a[] = "azmruf";
char *ptr = a;
ptr += 5;
//Now ptr points at 'f'
printf("%c", --*ptr--); //e got printed. Bcos of post increment now ptr in u.
printf("%c", *ptr); // so 'u' got printed now.
// Next --*--ptr becomes --*(--ptr),
// ptr is moved to r, then --r i.e q is printed, but pointer should
// be in 'r'
printf("%c", --*--ptr);
//Im here getting 'q' only instead of 'r'. There is no 'q' in my string.(??!!!)
printf("%c", *ptr);
return 0;
}
我如何在上次printf()中得到“q” 减量运算符有一个非常重要的副作用。也就是说,它将存储的值减少1。您原来的数组中有一个“r”,但它已被一个“q”取代。代码运行后,整个阵列看起来如下所示:
"azmque"
存储的值实际上已更改,因此当您第二次引用数组的第四个元素时(也称为
*ptr
或a[3]
),该位置的值为“q”。我希望这不是生产代码@JonathanGrynspan,这不是生产代码。只有学习目的。@Jeyaram你从中学到了什么?如何在模糊C常量中获胜?@Aniket,只是学习指针的基本知识:)不要在单个语句中混合前缀/后缀运算符。即使定义明确(并不总是如此!),它们也很难阅读。