Progtwig C: confusión para principiantes en el trabajo con matrices de cadenas de caracteres

Me estoy confundiendo trabajando con matrices de cadenas de caracteres. Estoy tratando de llenar 2 matrices en un bucle for. Dentro de cada matriz, todos los elementos son iguales.

Para conservar memoria, para array_person_name bash simplemente copiar el puntero a la cadena almacenada por person_name . Para array_param , la cadena en la que almacena el puntero siempre tiene 2 caracteres de longitud (por ejemplo, “bt”) más el carácter de terminación nula, y aquí también bash conservar la memoria almacenando el puntero en “bt” en array_param .

Dado que la cantidad de elementos de matriz, arraysize de matriz, se descarga de una base de datos cuando se ejecuta el progtwig, uso malloc para asignar memoria. Como mi sistema operativo es de 64 bits (Linux x86-64), arraysize 8 bytes para cada uno de los punteros de arraysize . Aunque no se muestra, libero estos dos arreglos al final del progtwig.

 int kk, arraysize; char person_name[101] = ""; char * array_person_name; char * array_param; ... strncpy(person_name, "John Smith", 100); arraysize = ; ... 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]); 

El comstackdor devuelve las advertencias: warning: assignment makes integer from pointer without a cast en las dos líneas dentro del bucle for. ¿Alguna idea de lo que estoy haciendo mal?

Ya que desea que cada elemento en array_person_name y array_param sea ​​un puntero a person_name / “bt”, desea un char ** :

 char **array_person_name; array_person_name = malloc(arraysize * sizeof(*array_person_name)); for (int i=0; i 

Está asignando un puntero a la matriz person_name al carácter definido por array_person_name [kk]. Lo que probablemente pretendías hacer era definir array_person_name como un tipo char **.

No debes asumir 8 bytes porque es de 64 bits. Debe dejar esa parte a C y usar el operador sizeof() .