数组的指针指向可变大小的字符串?

  • 本文关键字:字符串 指针 数组 c
  • 更新时间 :
  • 英文 :


我想知道这是错误的代码。原因pleasec

#include <stdio.h>
#include <string.h>
#include <malloc.h>
void func(char **c)
{
strcpy(c[0],"he");
strcpy(c[1],"h");
//  memcpy(*c[2],"hell",sizeof("hell"));
//  c[0]="hello";
//c[1]="hi";
}
int main()
{
char *arr[2];
arr[0]=malloc(sizeof(char[3]));
arr[1]=malloc(sizeof(char[2]));
func(arr);
printf("%sn",arr[0]);
printf("%sn", arr[1]);
return 0;
}

这行似乎分配了3 * sizeof(char)

arr[0]=malloc(sizeof(char[3]));

这行似乎分配了2 * sizeof(char)

arr[1]=malloc(sizeof(char[2]));

数组的指针指向可变大小的字符串?

是的。


这个代码是错误的吗?

func()脆性,因为它可能根据输入值表现出未定义行为

  • 没有c[]可以被索引的信息

  • 没有关于strcpy(c[i], ....)可以复制多少字节的信息。

func()main()中是OK,因为它传递的值恰好不超过OP的功能限制。

func()是一个错误的设计,因为它缺乏参数来指导它的局限性,并且缺少空指针错误检测。

最新更新