LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 933|回复: 4

char ****p 分配空间, 急 !

[复制链接]
发表于 2007-7-16 10:12:00 | 显示全部楼层 |阅读模式
哪位知道,怎么样分配 char ****p  的空间,
下面是我的程序的一部分,请大家帮忙看看。
或者有什么好的分配方法,介绍给小弟,谢谢大家。 

int aaa(char ****ppdata)
{
    char ***tmp_p = NULL;
    int count = 10;
    int k;

    tmp_p = *ppdata = (char ***)malloc(count*sizeof(char ***));

     
     for(i=0;i<count;i++)
    {
           k = 0;
           for (;条件;)
          {
            tmp_p = (char **)realloc(tmp_p,(k+1)*sizeof(char **));
            tmp_p[k] = (char *)malloc(4001*sizeof(char *));
            memset(tmp_p[k],0,4001*sizeof(char));      
            k++;
            }
     }
     
     return 0;
}
发表于 2007-7-16 13:36:50 | 显示全部楼层
我都看不懂。还没看过这么星号的指针。。刚刚学。。
回复 支持 反对

使用道具 举报

发表于 2007-7-17 09:43:06 | 显示全部楼层
一个三维数组,每一个元素是一个字符串,不就是4个星星。用数组方式考虑一下试试。
回复 支持 反对

使用道具 举报

发表于 2007-7-17 13:25:25 | 显示全部楼层
  1. int set(char ****p){
  2.     int i=how_many_elements_the_first_dimension_has();
  3.     *p=(char***)malloc(i*sizeof(char**));
  4.     for(int j=0;j<i;j++){
  5.           int k=how_many_elements_the_second_dimension_has(j);
  6.           *(*P+j)=(char**)malloc(k*sizeof(char*));
  7.           for(int t=0;t<k;t++){
  8.                   int r=how_many_elements_the_third_dimension_has(j,t);
  9.                   *(*(*P+j)+t)=(char*)malloc(r*sizeof(char));
  10.           }
  11.     }
  12. }
复制代码


手边没有编译器,没有验证
回复 支持 反对

使用道具 举报

发表于 2007-7-18 12:48:00 | 显示全部楼层
指针的大小是和系统有关的,也就是32位还是64位。
只要是指针,不论指的是什么,它的大小都是sizeof(void *)。
注意是指针变量本身的大小,不是只向的其他数据的大小。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表