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
указывают.
Рекомендуемое чтение: раздел 6 из comp.lang.c FAQ .