首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为字符串数组创建指针?

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

Stack Overflow用户
提问于 2019-04-16 08:48:36
回答 1查看 88关注 0票数 0

我是个C新手,不知道当涉及到字符/字符串时如何正确地传递指针/地址。我无法理解这些关于如何掌握指针的“字符串”。

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

请帮帮我!

我有以下代码:

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 09:15:42

您有一个char[2][3],因此可以将char (*)[2][3]传递给change函数。要将tempWord复制到您的char[][]中,可以使用strncpy。假设我理解您想要做的事情,它可能看起来像

代码语言:javascript
复制
#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你的内存。就像这样

代码语言:javascript
复制
#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);
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55699073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档