我对使用字符串数组感到困惑。我正在尝试在 for 循环中填充 2 个数组。在每个数组中,所有元素都是相同的。
为了节省内存,array_person_name
我尝试简单地将指针复制到由person_name
. 因为array_param
,它存储指针的字符串总是 2 个字符长(例如“bt”)加上空终止字符,在这里我还尝试通过将指向“bt”的指针存储在 中来节省内存array_param
。
由于数组元素的数量arraysize
, 是在程序运行时从数据库中下载的,因此我使用 malloc 来分配内存。由于我的操作系统是 64 位(Linux x86-64),我为每个arraysize
指针分配 8 个字节。虽然没有显示,但我在程序结束时释放了这两个数组。
int kk, arraysize;
char person_name[101] = "";
char * array_person_name;
char * array_param;
...
strncpy(person_name, "John Smith", 100);
arraysize = <this value is downloaded from database>;
...
array_person_name = malloc( 8 * arraysize ); /* 8 is for 64b OS */
array_param = malloc( 8 * arraysize );
for (kk = 0; kk < arraysize; kk++) {
array_person_name[kk] = &person_name;
array_param[kk] = &"bt";
}
/* test results by printing to screen */
printf("Here is array_person_name[0]: %s\n", array_person_name[0]);
printf("here is array_param[0]: %s\n", array_param[0]);
编译器返回警告:warning: assignment makes integer from pointer without a cast
在 for 循环内的两行。知道我做错了什么吗?