2 qq 34524827 qq_34524827 于 2016.04.07 16:00 提问

C语言代码解释,关于数组

在C中这行name[i]=(char*)malloc(4*sizeof(char));是什么意思???麻烦解答一下

8个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.07 16:11
已采纳

一般来说name是个指针数组或者二级指针

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    char *name[2];  //声明一个指针数组,数组的每个元素都是一个指针
    name[0] = (char *)malloc(4*sizeof(char));//为name的第一个元素(即一个char *指针)分配4字节空间
    strcpy(name[0], "asd");
    name[1] = (char *)malloc(4*sizeof(char));//为name的第二个元素(即一个char *指针)分配4字节空间
    strcpy(name[1], "ddd");
    printf("%s\n%s\n", name[0], name[1]);
}

图片说明

gr47725812
gr47725812   2016.04.07 16:11

name是一个长度为四的char数组

suwu150
suwu150   2016.04.07 16:14

开辟新的地址空间,使用malloc 函数,强制类型转换为char 类型

suwu150
suwu150 其中sizeof (char)的结果为1
一年多之前 回复
yanjinxu
yanjinxu   2016.04.07 16:26

sizeof( char ) 计算一个字符的字节数
4*sizeof( char ) 4个字符的字节数
malloc( 4*sizeof( char )) 分配4个字符的存储空间
name[ i ] = (char*)malloc(4*sizeof( char )) 分配的存储空间地址赋值给数组中 name[ i ] 元素
总的来说就是为name[ i ]分配了4个字符的存储空间,而且neme[ i ]是这个存储空间的首地址

yanjinxu
yanjinxu 回复charles123a: 你可以将 name[ i ] 地址打印出来看看就知道了
一年多之前 回复
qq_34524827
qq_34524827 这样说我理解了 那我想问下 #include<stdio.h> #include<string.h> void main() { void input(char *name[],int n); char *name[4]; int n=4; input(name,n); } void input(char *name[],int n) { int i; printf("请输入4个字符串:\n"); for(i=0;i<n;i++) { name[i]=(char*)malloc(4*sizeof(char)); gets(name[i]); } } 这里面的name[i]=(char*)malloc(4*sizeof(char));这行是对gets函数输入的字符串依序分配空间对吗?
一年多之前 回复
qq_34575264
qq_34575264   2016.04.07 16:36

name是指针数组,然后存储malloc函数返回的指向字符的首地址。

zhangmeng1021
zhangmeng1021   2016.04.07 16:37
  1. name[i]==》*name,你可以把[]去掉。name表示你申请这块内存中数据的首地址。
  2. (char*)就是你要申请存放什么类型的数据,这里你要存放的是char类型
  3. malloc是申请内存,申请的内存放在堆中。
  4. sizeof(char)是你申请内存的大小。char占一个字节。4*sizeof(char)表示你申请4个字节。
  5. 所以name[i]=(char*)malloc(4*sizeof(char));等同于char *name=(char *)malloc(4*sizeof(char))
CSDNXIAON
CSDNXIAON   2016.04.07 16:42

C语言代码解释
黑马程序员:c语言数组及练习代码
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

qq_26431469
qq_26431469   2016.04.08 10:24

使用malloc 函数强制类型转换为char 类型

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!