У вас есть char[2][3]
, чтобы вы могли передать char (*)[2][3]
в вашу change
функцию.Чтобы скопировать tempWord
в ваш char[][]
, вы можете использовать strncpy
.Предполагая, что я понимаю, что вы пытаетесь сделать, это может выглядеть как
#include <stdio.h>
#include <string.h>
void change(char (*a)[2][3]) {
*a[0][0] = 'k';
}
int main() {
char a[2][3];
char *tempWord = "sa";
strncpy(a[0], tempWord, strlen(tempWord));
strncpy(a[1], tempWord, strlen(tempWord));
change(&a);
}
Есть ли другое определение указателя, кроме char(*a)[2][3]
?
Iдумаю, вы действительно хотели char **
;для этого вам понадобится malloc
и free
вашей памяти.Что-то вроде
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void change(char **a) {
a[0][0]='k';
}
int main() {
char **a;
char *tempWord = "sa";
a = malloc(2 * sizeof(char **));
a[0] = malloc(strlen(tempWord) * sizeof(char *));
a[1] = malloc(strlen(tempWord) * sizeof(char *));
strncpy(a[0], tempWord, strlen(tempWord));
strncpy(a[1], tempWord, strlen(tempWord));
change(a);
printf("%s\n", a[0]);
free(a[1]);
free(a[0]);
free(a);
}