我有一段难以理解的代码片段。
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?
的第一列答案 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 ?
如果p
和c
尚未初始化,则表示未定义的行为(这意味着如果您很幸运,您的程序会崩溃 。如果它们已正确初始化:p
指向char*
个对象;让我们称该对象为pstar
。pstar
指向char
个对象;让我们调用该对象pstarstar
。c
也指向char
对象;我们称之为cstar
。该作业会将cstar
的值复制到pstarstar
。
的含义取决于p
和c
指向的内容。
推荐阅读:comp.lang.c FAQ的第6部分。
答案 2 :(得分:0)
这意味着char
指向的c
被复制到指向的p
点。
c->some char
被复制到
p->*p->some char