我无法理解这个问题。也许是因为现在已经两点了。无论如何,在这里我束手无策。
#include <stdio.h>
int main()
{
char array[] = "123456789";
char* ptr = array;
printf("%c\n", *(ptr++));
printf("%c\n", *ptr);
*ptr = array[3];
printf("%c\n", *(ptr++));
printf("%c\n\n", *ptr);
return 0;
}
结果是:
1
2
4
3
我有一个指针,它被赋值为
array
。然后我打印出了我认为是第一个索引(
'2'
),但实际上得到了1
。 -- 因此,我认为*(ptr++)
实际上在增加指针之前进行了解引用。然后,我重新分配了
ptr
的第4个索引('4'
),并重复步骤2。现在这个工作正常了, 我发现C语言不会在解引用之前计算括号。然后我打印新增的
ptr
以显示('5'
)...但我得到了3
?
为什么步骤1和2与步骤3和4相同,但结果却不同?
*ptr = array[3];
并没有“重新分配指针”的意思。然而,ptr = &array[3];
会实现这一点。我建议您休息一下 ;) - Oliver Charlesworthptr =&array [3]
。 - johnchen902