如何为字符串数组创建指针?

How can I create a pointer for an array of strings?

我是 C 语言的新手,不知道如何正确地传递 pointers/addresses chars/strings。关于如何掌握指针,我无法理解这些 "strings"。

我基本上想将下面定义的数组"a"的地址传递给任意函数,但我不知道如何定义这个数组的指针。

请帮帮我!

我有以下代码:

void change(char** a){
    a[0][0]='k';    //that should change a inside main
}

void main() {
    char a[2][3];
    char *tempWord;
    tempWord="sa";
    a[0]=tempWord;
    a[1]=tempWord;
    change(&a);
}

您有一个 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]还有别的定义吗?

我猜你真的想要一个 char **;你需要 mallocfree 你的记忆。像

#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);
}