(int (*)[])var1 代表什么?
我找到了这个示例代码,并尝试用谷歌搜索 (int (*)[])var1
代表什么,但没有得到有用的结果。
#include <unistd.h>
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
return var1[0][0];
}
int example() {
int *var1 = malloc(100);
return i(10,10,(int (*)[])var1);
}
通常我在 C99 中使用 VLA,所以我习惯了:
#include <unistd.h>
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
return var1[0][0];
}
int example() {
int var1[10][10];
return i(10,10,var1);
}
谢谢!
I found this example code and I tried to google what (int (*)[])var1
could stand for, but I got no usefull results.
#include <unistd.h>
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
return var1[0][0];
}
int example() {
int *var1 = malloc(100);
return i(10,10,(int (*)[])var1);
}
Normally I work with VLAs in C99 so I am used to:
#include <unistd.h>
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
return var1[0][0];
}
int example() {
int var1[10][10];
return i(10,10,var1);
}
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这意味着“将 var1 转换为指向 int 数组的指针”。
It means "cast var1 into pointer to array of int".
它是指向 int 数组的指针的类型转换。
It's a typecast to a pointer that points to an array of int.
(int (*)[])
是指向int
数组的指针。相当于 int[n][m] 函数参数。这是 C 中的常见习惯用法:首先执行 malloc 来保留内存,然后将其转换为所需的类型。
(int (*)[])
is a pointer to an array ofint
s. Equivalent to theint[n][m]
function argument.This is a common idiom in C: first do a malloc to reserve memory, then cast it to the desired type.