【发布时间】:2020-06-22 17:12:49
【问题描述】:
有这个:
#include <stdio.h>
#include <stdlib.h>
int main(){
void *mem = malloc(10);
for(int i =0; i<10 ; i++)
(char*)mem[i] = 'a'; //want to cast in loop
}
报错
warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
(char*)mem[i] = 'a';
warning: dereferencing ‘void *’ pointer
error: invalid use of void expression
(char*)mem[i] = 'a';
但是,必须在 before 循环之前进行强制转换是可以的:
#include <stdio.h>
#include <stdlib.h>
int main(){
char *mem = malloc(10);
for(int i =0; i<10 ; i++)
mem[i] = 'a';
}
循环的步骤不进行强制转换。那么为什么我不能做前者,我在每个循环中投射指针呢?
【问题讨论】: