C 中的指针和转换

Cne*_*iec 1 c pointers casting

这次我开始学习指针了。我试图从这个数组中读取字节。任务快完成了,但 CLang 一直警告我,警告我不明白。这是我的代码。警告说:“函数调用参数是一个未初始化的值”

int main(void)
{
    int tab[] = {67305985,134678021,202050057};
    int *pp=0;
    pp=tab;

    char *wsk=(char*)pp;

    for (int i = 0; i < 12; i++)
    {
        if((wsk+i)!=(void*)NULL)
            printf("%d ",*(wsk+i));    // warning on this line
        else
            return 0;
    }

}
Run Code Online (Sandbox Code Playgroud)

M.M*_*M.M 5

这些警告来自 Clang 静态分析器(或者现在他们称之为什么)。

如果我们假设它int至少有 4 个字节并且真正的代码#include <stdio.h>没有其他变化,那么这对我来说似乎是一个误报。

如果您使用的是最新版本的分析器,则可以提交 clang 错误报告。好吧 - 如果他们允许尚未拥有帐户的人提交错误报告,则可以。也许阅读此线程的其他人可以做到。

注意:准确发布您正在运行的分析器版本(这可能与您用于构建的编译器不同——某些 IDE 使用不同的编译器进行构建而不是这些内联消息)将有助于解决这个问题。