char a[3][4]={"aaaa","bbbb","cccc"};char **p=new char*(3);p=(char**)a;printf("a[0]=%s",*p[0]);这样写好像不行,我想用p来访问a的值,请问应该怎么改呢? 

解决方案 »

  1.   

    char **p=new char*(3); 
    改为:
    char **p=new char*[3]; 
      

  2.   

    char **p=new char*(3); p=(char**)a; ---->p的指向已改变,内存泄漏了
      

  3.   


    char *a[]={"aaaa","bbbb","cccc"};
    char **p = a;
    printf("a[0]=%s", *p[0]);
      

  4.   

    char*a[]={"aaaa","bbbb","cccc"};char**p=a;
    因为那个二维数组已经是char a[3][4]这样定义了,所以不能改,
    有没有办法直接用p=a,然后访问a的元素呢?
    即:
    char a[3][4]={"aaaa","bbbb","cccc"};
    char  **p=a;
    然后访问?
      

  5.   

    char **p=new char*(3); 
    不需要new新的空间;
    char **p=(char**)a;printf("a[0]=%s",p); 这样就可以了
      

  6.   

    char **p是指向指针的指针,不是指向二维数组的指针。指向二维数组的指针应该这样定义:
    char (*p)[4];
    new char*(3)表示分配一个char*型变量,初始化为3。分配一个二维数组应该这样:
    new char[3][4];
      

  7.   

    char a[3][4]={"aaaa","bbbb","cccc"}; char **p=a; printf("a[0]=%s",*p[0]); 
      

  8.   

    谢谢各位,oyljerry 的方法可以,少用指针啊。。现在是重头学了