字符指针malloc分配空间小问题,请告诉我们

发布于 科技 2024-08-09
6个回答
  1. 匿名用户2024-01-31

    str 只是指向字符串初始字符的地址,当您输入超过 2 个字符时,系统会将已经占用的空间分配给它,如果占用的存储空间不存储重要信息,也不会出现问题。

    如果要输入无限的字符串,可以将上限设置为更大的限制,也可以使用动态分配存储空间的方法。

    int limit;

    char * str;

    str=(char *)malloc((limit+1)*sizeof(char));

    有一个 0 字符*

    scanf("%s",str);

    printf("%s",str);

  2. 匿名用户2024-01-30

    字符末尾符号也占用 1 个字节。 '\0' zhan yi ge byte.

  3. 匿名用户2024-01-29

    如果想要不受限制,可能要一次输入一个字符,这样比较实用,就是输入一个字符,就会被评判一次。

  4. 匿名用户2024-01-28

    它没有限制,但超出限制是危险的。

    例如,char* s="abcde"这相当于系统为您分配了 6 个字节的空间。

    和 char s[6], char* s=(char *)malloc(6*sizeof(6))。

    据说这些方法在 6 个字节内都是安全的。

    输入字符串必须受到限制,只需将上限设置得更大即可。

  5. 匿名用户2024-01-27

    malloc(n);

    malloc 函数分配指定长度的内存块,如果分配成功,则返回指向已分配内存的第一个地址的指针,否则返回空指针。

    调用此函数时,系统会自动查找可用的连续内存,并确保返回的指针地址在 n 字节后是空闲的。 但是 n 字节之后的内存也可能是空闲的。 这时越界是安全的,如果不闲着,程序可能会报错或其他错误,这取决于编译的软件,不同的编译软件有不同的结果。

    输入字符串时,请将 n 设置为较大的大小,如果不想有限制,一次只能输入一个字符。

  6. 匿名用户2024-01-26

    指针数组和数组指针是两个不同的概念,你在这里给出的定义实例实际上是指针数组的定义。

    指针数组意味着所定义数组的每个元素都是对应数据类型的指针,可以使用循环语句进行打开空格的操作,例如:for char *p[10]; 是的。

    for(i=0;i<10;i++)

    p[i]=(char *)malloc(sizeof(char)*n);为每个指针请求 n 个字符的存储空间。

    打开后,p的使用类似于二维数组的格式,可以有效使用两个下标,如p[0][0]='a';

    你也可以分配一个字符串,如 p[2]="beijing";当然,字符串长度应小于 n。

    另一方面,数组指针是定义为指向固定大小的顺序空间的指针,格式如下:

    char (*pa)[10];定义一个指向具有 10 个元素的字符数组的指针,int (*p)[10];

    应用格式可以参考以下步骤,在申请空格、赋值、输出后,可以观察到100赋值到第五行的第十个元素,指针可以像二维数组一样通过两个下标来指代请求的空间。

    #include

    main()}

相关回答
13个回答2024-08-09

前面的 l[i] 是一个 char 变量,而 new char[101] 是一个字符串空间,两个变量的类型不同,所以会产生错误。

6个回答2024-08-09

这里的第一个 * 符号和它前面的数据类型表示返回值是这种类型的指针!! >>>More

20个回答2024-08-09

这个问题实际上是由 char 指针的特殊性和 cout 函数的重载函数引起的 >>>More

6个回答2024-08-09

如果它是一个静态数组,例如 char a[10],那么它会打开一个 10 个字符大小的连续空间,你可以合法地填充从 a[0] 到 a[9] 的 10 个空格,每个空间大小都是 char。 如果是动态数组,如果使用 realloc,则 realloc 原型为 extern void *realloc(void *mem address, unsigned int newsize); >>>More

10个回答2024-08-09

您的 ** 错误是:

没有为 s 分配空间,只需操作 s->base 初始化即可将其更改为以下方式: >>>More