c - 如何设置一个数组等于 char* 方法的返回值

标签 c pointers char arrays

假设我有一个返回 char 数组的 char* 方法。我如何设置另一个字符数组等于该返回值?例如,这是 char* 方法:

char* work(int num){
    char buf[32];
    sprintf(buf, "%d", num);

    return buf;
}

我需要在 main 方法中放入什么才能使用返回值?我试过了

int main() {
    char rValue[32] = work(5);
}

但我得到“错误:数组初始值设定项必须是初始值设定项列表或字符串文字”

int main() {
    char rValue[32];
    rValue = work(5);
}

给我“错误:数组类型'char [32]'不可分配”。

我知道解决方案可能非常简单,但我迷路了。我如何访问返回值?

最佳答案

您想要做的是使用指针传递rValue

我不完全确定您想要实现的目标,但我的下面的修改允许在 gcc 上进行无错误的编译。

您正在做的是将 rValue 数组的第一个元素的地址传递到工作中。由于您正在直接处理原始数据,因此无需返回。这类似于某些语言“通过引用传递”时的情况

#include <stdio.h>

void work(int num, char *rValue) {
    sprintf(rValue, "%d", num);
}

int main() {
    char rValue[32];
    work(5, rValue);
}

关于c - 如何设置一个数组等于 char* 方法的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23547544/

相关文章:

c - int 数组转 char 指针

c++ - 固定 : Access Violation Reading Location (pointer to string array)

c - C中的双指针问题(下一个单指针,上一个双指针)

c - 初始化 "a pointer to an array of integers"

c++ - (string)char 类型转换

c - 在c-crash中删除链表

c++ - 结构作为基类 - C/C++ 互操作性

c - 运算符 >>= 在 C 中的含义?

C 在函数中初始化一个字符数组,或者我应该将它作为参数传递

java - 顺序搜索二维char数组