警告:格式 '%i' 需要类型为“int”的参数,但参数 2 的类型为“int *” [-Wformat=]

warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]

提问人:Nhenon 提问时间:11/2/2022 更新时间:11/2/2022 访问量:152

问:

我在 Linux 中使用共享内存创建了一个 int 的向量 (vectorR),代码如下:

    int shmidR, tamR;
    tamR = fil*col2;
    int *vectorR[tamR]; // Creating the vector
    shmidR = shmget(IPC_PRIVATE, sizeof(int)*fil*col2, IPC_CREAT|0666);
    vectorR[tamR] = (int*) shmat(shmidR, NULL, 0);

然后我对这个向量进行操作,最后我想打印内容以查看它是否好:

for (int i = 0; i < tamR; i++)
{
    printf("%i", vectorR[i]);
}

但是我在标题中收到警告:警告:格式“%i”需要类型为“int”的参数,但参数 2 的类型为“int *”[-Wformat=]

C 指针 警告

评论

0赞 Vlad from Moscow 11/2/2022
警告有什么不清楚的地方?警告使用专门为您准备的人类语言。
1赞 Weather Vane 11/2/2022
int *vectorR[tamR];是一个指针数组。
0赞 John Bollinger 11/2/2022
...并且以这种方式声明,超越了 .vectorRvectorR[tamR] = (int*) shmat(shmidR, NULL, 0)vectorR

答:

0赞 Tenobaal 11/2/2022 #1

int *vectorR[tamR]创建一个 int 指针数组。你想要的是一个整数数组。只需使用 .int vectorR[tamR]

int shmidR, tamR;
tamR = fil*col2;
int vectorR[tamR]; // Creating the vector
shmidR = shmget(IPC_PRIVATE, sizeof(int)*fil*col2, IPC_CREAT|0666);
vectorR[tamR] = (int) shmat(shmidR, NULL, 0);