c - 我无法确定为什么这个 C 程序会给我这个答案

标签 c pointers constants

不知道为什么输出是 6? 在给定的 C 程序中,我每次都得到 6 的输出,所以我不能说它正在打印垃圾值

#include<stdio.h>
void main()
{
    int const* a=2; 
    printf("%d\n",++(a));
}

我无法确定为什么这个 C 程序会给我这个答案。

最佳答案

当你增加一个指针时,它实际上增加了它所指向的类型的大小。

在这里您初始化了一个指向值 2 的指针。然后,您增加指针,通过上面的操作,指针在您的系统上增加 sizeof(int)4。然后打印出这个值 - 6。

关于c - 我无法确定为什么这个 C 程序会给我这个答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25357883/

相关文章:

c - Write() 到文件描述符在 read() 时消失

c - 在此示例中无法理解从 (char *) 到 (int *) 的指针取消引用

c++ - 如何指定方法更改了哪些数据成员?

c++ - 为什么这个指向常量指针的指针赋值是非法的?

c - scanf 打印到控制台?

c - 将文件指针移至末尾

C - 在函数中重新分配指针类型的结构成员变量。 Valgrind 报告 "Invalid read/write of size 1"

c - 访问指针使其值改变

c - 使用递归反转c中的字符串,而不使用任何其他数组或指针

c++ - 可变匿名结构