我是个C新手,不知道当涉及到字符/字符串时如何正确地传递指针/地址。我无法理解这些关于如何掌握指针的“字符串”。
我基本上想把下面定义的数组"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);
}
发布于 2019-04-16 09:15:42
您有一个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);
}
https://stackoverflow.com/questions/55699073
复制相似问题