gpt4 book ai didi

c - 使用给定的指针初始化字符串

转载 作者:行者123 更新时间:2023-11-30 19:14:16 25 4
gpt4 key购买 nike

我的函数接收 2 个变量: char* str ,和int cap

str变量是一个空的字符数组,我正在尝试初始化一种名为 NEW, s.t NEW 的新类型字符串:

  • As in regular strings, the prefix of the character array before the first '\0' character defines the string.
  • The string is followed by a non-empty sequence of '\0' characters, followed by the character '\1', which signifies the end of NEW.

NEW的初始化需要动态分配内存吗?如果不是,使用该指针的正确语法是什么?

最佳答案

如果没有给您分配内存,那么您必须自己动态分配它。

基本上,如果你的函数接收到一个 char * 我会假设调用的已经分配的内存并将其传递给你进行初始化,在这种情况下,我会这样做:

   initialize_NEW(char *str, int cap) 
{
memset(str, 0, cap);
str[cap-1] = '\1';
...
}

假设 cap 是传递的 char 数组的长度。

如果你要初始化内存,我认为该函数应该类似于:

   initialize_NEW(char **str, int cap) 
{
*str = malloc(cap);
if (!(*str)) { /* Malloc error handling here */
memset(str, 0, cap);
(*str)[cap-1] = '\1';
...
}

理想情况下,您希望从调用它的同一函数中释放内存 - 但如果您给出了要初始化的内存,我就是这样做的。

关于c - 使用给定的指针初始化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34356058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com