[英]What is the `.arr` function in this piece of code?
我来自 Python,但我在 C 语言的 Codefights 中看到了这段代码,但我无法通过谷歌找到.arr
含义。 我也没有看到代码中有任何变量:
// Definition for arrays:
// typedef struct arr_##name {
// int size;
// type *arr;
// } arr_##name;
//
// arr_##name alloc_arr_##name(int len) {
// arr_##name a = {len, len > 0 ? malloc(sizeof(type) * len) : NULL};
// return a;
// }
//
//
int firstDuplicate(arr_integer a) {
int i = 0;
int val = 0;
for(i = 0; i < a.size; i++) {
val = a.arr[i];
if(val < 0) {
val = -1*val;
}
if(a.arr[val-1] < 0) {
return val;
} else {
a.arr[val-1] = a.arr[val-1]*-1;
}
}
return -1;
}
a.arr[i]
as a[i]
吗?
如果我没记错的话,在 CodeFights 中,您使用的包装器定义为:
// Definition for arrays:
typedef struct arr_##name {
int size;
type *arr;
} arr_##name;
因此, arr_integer
不是一个数组,而是一个包含 int 数组的struct
。 要访问其元素,您需要.arr
。
它不是方法,C 中没有这样的东西。它是结构成员。
我的猜测是,在您的代码示例之前, arr_integer
的定义为:
typedef struct {
int *arr;
// Other members
} arr_integer;
或者
typedef struct {
// Other members
int arr[];
} arr_integer;
其他成员可能是数组的大小和容量。
我同意上面的@Derlin。 这是一段用于打印元素的代码
arr_arr_integer rotateImage(arr_arr_integer a) {
int i=0, j=0;
for(i=0; i<a.size;i++){
for(j=0; j<a.size;j++){
printf("i=%d, j=%d, %d\n",i,j,a.arr[i].arr[j]);
}
}
}
就像指出的那样,结构定义看起来像这样:
typedef struct {
int size;
int arr[];
} arr_integer;
typedef struct {
int size;
arr_integer arr[];
} arr_arr_integer;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.