如何为字符串数组创建指针?
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 **
;你需要 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);
}
我是 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 **
;你需要 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);
}