【发布时间】:2020-04-22 04:10:00
【问题描述】:
最近正在处理这个练习:
计算数组中每个元素的大小。创建一个函数
my_count_on_it,接收一个字符串数组作为参数,返回一个数组,每个字符串的长度。
结构:
typedef struct s_string_array {
int size;
char **array;
} string_array;
typedef struct s_integer_array {
int size;
int *array;
} integer_array;
所以正确的答案是:
#include <string.h>
integer_array *my_count_on_it(string_array *a) {
integer_array *ptr;
ptr = (integer_array *)malloc(sizeof(integer_array));
ptr->size = a->size;
ptr->array = (int*)malloc(ptr->size * sizeof(int));
for (int i = 0; i < a->size; i++) {
ptr->array[i] = strlen(a->array[I]);
}
return ptr;
}
我知道指针存储了某个变量的地址,但我不明白为什么在这种情况下我不能创建integer_array 的变量类型并用它来执行所有操作(在循环中),只有这样将其地址存储在integer_array * ptr?还有一个问题,如果是这样,为什么我们要创建指针sizeof(integer_array)?
例如:
int variable = 5;
int *ptr = &variable;
在这个简单的例子中,我分别创建变量和指针并存储地址。第一个代码中令人困惑的地方是,在我看来,我们只创建了一个指针,它并没有指向某个地址。
【问题讨论】:
标签: c pointers memory malloc structure