c指针指向指向指针的含义是什么意思

时间:2011-09-25 03:56:09

标签: c pointers

我有一段难以理解的代码片段。

char *c;   // c is uni dimensional table ( single row )

char **p ; // p is a two dimensional table 

**p = *c;  // what does this mean ?

当我执行上述任务时,是否将c复制为p?

的第一行

或c被复制为p?

的第一列

3 个答案:

答案 0 :(得分:6)

  

** p = * c; //这是什么意思?

     

当我执行上述任务时,是否将c复制为p的第一行?或c被复制为p?

的第一列

该代码也没有将c的第一个元素复制到p的第一个元素。相当于

p[0][0] = c[0];

答案 1 :(得分:1)

char *c;   // c is uni dimensional table ( single row )

不,c是指针,不是数组。如果正确初始化它,它可以指向数组的第一个元素,但指针本身不是数组。

char **p ; // p is a two dimensional table 

不,p是指向char*的指针;它不是一张桌子。同样,它可能指向一个像二维数组的东西。一个真正的二维数组只是一个数组数组,但还有其他几种方法可以使用指针来模拟更灵活的二维数组版本,具有动态分配和不同的行大小。

**p = *c;  // what does this mean ?

如果pc尚未初始化,则表示未定义的行为(这意味着如果您很幸运,您的程序会崩溃 。如果它们已正确初始化:p指向char*个对象;让我们称该对象为pstarpstar指向char个对象;让我们调用该对象pstarstarc也指向char对象;我们称之为cstar。该作业会将cstar的值复制到pstarstar

的含义取决于pc指向的内容。

推荐阅读:comp.lang.c FAQ的第6部分。

答案 2 :(得分:0)

这意味着char指向的c被复制到指向的p点。

c->some char

被复制到

p->*p->some char