我正在尝试在 C 程序中编写更高效的代码,并且我需要一些帮助以使我的指针和分配正确。我在下面展示了两种方法,每种方法都使用以下声明和 strncpy:
int kk, arraysize;
char person_name[100] = "";
char * array_person_name, * array_param;
...
strncpy(person_name, "John Smith", 100);
arraysize = <this value is downloaded from database>;
...
方法A(矩形阵列):
array_person_name = malloc( sizeof(char) * arraysize *100 );
array_param = malloc( sizeof(char) * arraysize * 2 );
for (kk = 0; kk < arraysize; kk++) {
strncpy(array_person_name[kk], person_name, 100);
strncpy(array_param[kk], "bt", 2);
}
方法 B(参差不齐的数组):
for (kk = 0; kk < arraysize; kk++) {
array_person_name[kk] = &person_name;
array_param[kk] = "bt";
}
请注意,我尝试创建的数组将相同的值放入数组的每个元素中。方法 A 是一个(矩形)arraysize
元素数组,每个元素本身都是一个 100 个字符的数组。方法 B 试图通过创建一个(参差不齐的)元素数组来避免浪费存储空间arraysize
,其中每个元素都是一个指向字符的指针。
问题 1:我在方法 A 中是否正确分配内存(例如 malloc)?
问题 2:方法 B 的语法看起来是否正确?
问题 3:如何为方法 B 中的数组分配内存?
问题 4:我是否正确地认为方法 B 通常是首选?