以下需要解释的 C 指针输出

标签 c pointers

输出结果如何是 JACK?

#include <stdio.h>

int main()
{
    void *vp;
    char ch = 74, *cp = "JACK";
    int j = 65;
    vp = &ch;
    printf("%c", *(char*)vp);
    vp = &j;
    printf("%c", *(int*)vp);
    vp = cp;
    printf("%s", (char*)vp + 2);
    return 0;
}

最佳答案

vp = &ch;
printf("%c", *(char*)vp);

输出代码为74(J)的字符

vp = &j;
printf("%c", *(int*)vp);

输出代码为65(A)的字符

vp = cp;
printf("%s", (char*)vp + 2);

输出字符串“JACK”,偏移量为2(CK)

=> jack

关于以下需要解释的 C 指针输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32167241/

相关文章:

java - 如何在 JNI 中处理类结构体 jobject

c - 插入排序算法

创建指向二维数组的指针

c - 分配int存储?

c - C 中的指针和局部数组

c - 在 C 函数指针中传递更多参数

c - 我不知道为什么会出现这个错误

c - 套接字数据损坏

c - 指向二维数组的指针数组,读取不正确的值

c - pthread_join和void **-错误理解