如何 return C 中的缓冲区地址

How to return a buffer address in C

我正在尝试创建一个在 16 位微控制器的 RAM 中创建字符串的函数。 函数原型是这样的

char CID_Str[12] GetContactID(char Qual,long Event,char Partition,char Zone);

该函数应该return一个用输入参数创建的小字符串。

我以前从来没有做过这样的功能。 我不需要函数内代码的帮助。 我需要知道我应该如何声明 returning 参数 (Buffer),因为 CCS 编译器不喜欢那个原型。

数组可以returned 作为指向数组元素类型的指针。 returned 指针将是数组(或内存区域)中第一个元素的地址。你的情况:

char *GetContactID(char Qual,long Event,char Partition,char Zone);

以及您的评论:

I just created a buffer inside the variable like this char ContactID[12]; then at the end of the function i have a return ContactID;

一定不要return堆栈地址(例如局部变量地址)。这样的地址仅在函数范围内有效,如果 returned 给调用者,则成为无效(悬空)指针。主要选项有:

  1. 在函数和 return 中分配动态内存作为函数 return 值或在输出参数中。调用者负责释放内存。
  2. 调用者传入一个内存地址。
  3. 使用静态内存。

前两个是通常情况。

更新:我错过了您 运行 在微控制器上的事实。在那种情况下,静态内存可能更合适,因为这样的系统往往不需要动态分配的开销和复杂性。