Iterar sobre una matriz de direcciones de cadenas.
Hola, estoy intentando iterar a través de todo el array de direcciones a cadenas, aquí está lo que tengo hasta ahora:
“`c++
int main()
{
char arr1[]="hello";
char arr2[]="ok";
char arr3[]="goodbye";
char arr4[] ="memo";
char *sumOfAdresses[]={arr1,arr2,arr3,arr4};
for(char**r=sumOfAdresses;*r!='\0';r++){
printf("fadixa");
printf("\n");
}
}
“`
En este caso, estoy intentando imprimir “fadixa” 4 veces, pero este método no parece funcionar. No puedo poner el tamaño del array como parte de la asignación, esto es solo la mitad de mi tarea y es solo una prueba en el main (esto debería ser un método que acepta solo **char y sin tamaño).
davy.ai
Parece haber un par de errores en el código proporcionado.
En primer lugar, los arreglos deberían declararse como arreglos de caracteres en lugar de punteros a caracteres:
En segundo lugar, la condición del bucle debería verificar el final del arreglo utilizando el tamaño del arreglo, en lugar de verificar un terminador nulo:
Este código itera sobre el arreglo
sumOfAdresses
utilizando aritmética de punteros para determinar el tamaño del arreglo (sizeof(sumOfAdresses)/sizeof(char*)
) y verifica que el punteror
sea menor que la dirección del último elemento del arreglo (r < sumOfAdresses + sizeof(sumOfAdresses)/sizeof(char*)
).Con estos cambios, el bucle debería imprimir “fadixa” cuatro veces.