当前位置: 代码迷 >> C语言 >> [求助]关于结构体指针数组的问题
  详细解决方案

[求助]关于结构体指针数组的问题

热度:136   发布时间:2007-10-18 23:38:03.0
[求助]关于结构体指针数组的问题
数组里的存储的是结构体指针
我现在要为指针分配内存
我定义的结构体占16个字节
一般怎么分配?

str[i] = (STU *)malloc(81 * sizeof(STU));
这样是不是太浪费了?
还是直接一个大小就够了?str[i] = (STU *)malloc(sizeof(STU));

还是怎么分配比较合适?

还有为什么我把malloc里写0也能正常运行呢?
搜索更多相关的解决方案: 结构体  指针  

----------------解决方案--------------------------------------------------------
分配一个就可以了.
用malloc()来申请0个空间,就相当于没有申请到空间,
返回值为NULL
----------------解决方案--------------------------------------------------------

[QUOTE]
还有为什么我把malloc里写0也能正常运行呢?
[/QUOTE]
如果你不用它,它就不会有问题了
----------------解决方案--------------------------------------------------------

我运行了啊 而且也往里输入了数据 也可以啊 这个怎么回事啊?

还有我以前有个程序 str[i] = (char *)malloc(11 * sizeof(char));
是字符串指针数组 这个的意思是不是这个指针指向的空间里能存11个字节 也就是10个字符+\0呢

可我在控制台输入了超过10很多了字符怎么也可以呢?


----------------解决方案--------------------------------------------------------
c语言对指针的越界没有严格的检查,所以即使超过了也可以赋值,但是这样可能会引起很严重的后果。
----------------解决方案--------------------------------------------------------
回复:(奥丁)[求助]关于结构体指针数组的问题

用CALLOC不是更好.


----------------解决方案--------------------------------------------------------
以下是引用cutboy在2007-10-19 10:22:23的发言:

用CALLOC不是更好.

为什么?
----------------解决方案--------------------------------------------------------
那这个写成str[i] = (STU *)malloc(sizeof(STU));
就足够了吧
如果可能再往结构里加成员再分配一个也可以吧str[i] = (STU *)malloc(2 * sizeof(STU));
----------------解决方案--------------------------------------------------------

  相关解决方案