来自这个问题“What does (int (*)[])var1 stand for?”,我试图像访问多维数组一样访问强制转换的结果。但我收到以下错误:“assignment from incompatible pointer type
”后跟段错误。我还尝试了其他一些变体,但都没有用。如何在函数 example
中直接访问 var1
中的元素?
谢谢!
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
var1[0][0]=5;
return var1[0][0];
}
int example() {
int *var1 = malloc(100);
// works
int var2;
var2 = i(10,10,(int (*)[])var1);
printf("var2=%i",var2);
//doesn't work I
int *var3;
var3=(int (*)[])var1; //"assignment from incompatible pointer type"
printf("var3[0][0]=%i",var3[0][0]);
//doesn't work II
int *var4;
var4=var1;
printf("var4[0][0]=%i",var4[0][0]); //" error: subscripted value is neither array nor pointer"
//doesn't work III
int **var5;
var5=var1;
printf("var5[0][0]=%i",var5[0][0]); // assignment from incompatible pointer type
return(1);
}
int main(){
int a;
a=example();
return(1);
}
最佳答案
int *var3;
var3 = (int (*)[])var1;
您正在将已经是 int*
的 var1
转换为 int(*)[]
(指向 int 数组的指针)并分配它到 var3
这又是 int*
。
就这样
var3 = var1
关于我可以使用 [][] 访问类型 int (*)[] 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2973856/