【发布时间】:2010-06-04 12:00:39
【问题描述】:
来自这个问题“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);
}
【问题讨论】:
标签: c pointers casting multidimensional-array