C语言指针解释 30
指针是C语言中广泛使用的一种数据类型,指针的*主要出现在两个地方
首先是在指针定义时出现的*,定义时的 * 相当于标识了指针变量,即表明这是一个指针变量
其次,指针在使用时也会出现 *,这里的*的取内容的意思,即把指针内存储的东西提取出来使用
分个解释一下
int*p = a;
解析:此时 p 指向第一个元素,即 4。
*p++;
解析:等价于 *(p++),* 和 ++ 优先级相同,按照右结合的顺序。目的在于将 p 本身加 1,顺便取 p 指向的元素的值,由于此处为后缀 ++ 所以取出的值为 p 加 1 之前所指向元素的值 4。语句执行完后 p 指向第二个元素,其值为 5。
(*p)++;
解析:目的在于将 p 所指向的元素的值加 1。语句执行完后 p 仍然指向第二个元素,不过此时为其值为 6。
*(p++);
解析:同前面,此时 p 指向第三个元素,其值为 6。
++*p;
解析:等价于 ++(*p),目的在于将 p 所指向的元素的值加 1。语句执行完后 p 仍然指向第三个元素,不过此时其值为 7。
*++p;
解析:等价于 *(++p),目的在于将 p 本身加 1,顺便取 p 指向的元素的值,由于此处为前缀 ++ 所以取出的值为 p 加 1 之后所指向元素的值 7。语句执行完后 p 指向第四个元素,其值为 7。
所以最后数组 a = {4, 6, 7, 7, 8}
做这些题主要是判断清楚,到底是 p 指向的值加 1,还是 p 本身加 1,然后注意一下前缀 ++ 和后缀 ++。