问题:
1. c的类型是什么?
2. 它显然是一个指针,但它指向什么? 3. 变量b是一个“指向整形的指针”,所以任何指向b的类型必须是指向“指向整型的指针”的指针。更通俗的讲就是一个指针的指针。
4. 它合法吗? 是的。指针变量和其他变量是一样的,占据内存中某个特定的位置。所以用&操作符取得它的地址是合法的。 5. 那么这个变量是怎么声明的呢? int **c; 则: int a = 12; int *b = &a; int **c = &b;
6.11 指针表达式 char ch = ‘a’; char *cp = &ch;
现在我们就有了两个变量,他们的初始化如下:
表达式ch作为右值时:表达式的值是‘a’
但是当ch为左值的时候,ch就不是地址所包含的值‘a’,而是这个内存的地址。如图:
再如:&ch
&ch作为右值,表达式的值是变量ch的地址。 但是他不能作为左值。因为这个表达式并未标示任何机器内存的特定位置,他不是一个合法的左值。
作为右值就是cp的值。
作为左值就是cp所处的内存位置。
作为右值是:一个指向字符的指针的指针。 作为左值是非法的。
作为右值表示ch的内容; 作为左值表示ch的内存空间。
*的优先级高于+
作为右值,表达式的值是:ch的内容+1 作为左值是非法的
作为右值:就是ch之后一个字节的内容
作为左值:就是ch之后一个字节所在的存储空间
作为右值:就是ch下一个字节的地址。 作为左值:非法
作为右值:就是cp原值的一份拷贝。 作为左值:非法
作为右值:先给cp+1,指向ch的下一个字节,*++cp的值是下一个字节的内容。 作为左值:表示下一个字节的存储位置。

