c语言中*q*=*q+1是什么意思
时间: 2023-10-21 18:51:00 浏览: 226
在C语言中,`*q*=*q+1` 是一个赋值表达式。这个表达式的意思是将指针 `q` 所指向的内存位置的值加1,并将结果赋值给该内存位置。
解读该表达式的步骤如下:
1. `*q` 表示取指针 `q` 所指向的内存位置的值。
2. `*q+1` 表示将取得的值加1。
3. `*q*=*q+1` 表示将加1后的结果再赋值给指针 `q` 所指向的内存位置。
这样做可以用来对指针所指向的值进行自增操作。例如,如果 `q` 指向一个整型变量,执行 `*q*=*q+1` 后,该整型变量的值会增加1。
相关问题
void reverse(int *a, int n) { int *p = a; int *q = a + n - 1; int temp; while (p < q) { temp = *p; *p = *q; *q = temp; p++; q--; } }用c语言
这是一个反转数组的函数,它使用了指针来交换数组中的元素。函数的参数包括一个整型指针a,指向要反转的数组的第一个元素,以及一个整数n,指定数组中元素的数量。
函数中首先定义了两个指针变量p和q,分别指向数组的第一个元素和最后一个元素。然后,使用一个临时变量temp来交换p和q指向的元素的值,直到p指针到达q指针的位置。
最后,数组中的元素就被反转了。以下是完整的代码实现:
```c
void reverse(int *a, int n) {
int *p = a;
int *q = a + n - 1;
int temp;
while (p < q) {
temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
}
```
#include <stdio.h> int main() { int d[3][3]= {{2,4,6},{1,3,5},{7,8,9}}; int i=0, (*p)[3]=d, *q=d[0]; while(i<3) { if(i==1) (*p)[i]=*q+2; else ++p,q++; i++; } for(i=2; i>=0; i--) printf("%2d",*(*(d+i)+i)); return 0; }
这是一个C语言程序,主要功能是输出一个二维数组d中对角线上的元素。
程序中定义了一个3x3的二维数组d,并用指针p和q分别指向数组d和数组d的第一个元素。然后程序进入一个while循环,循环条件是i<3。在每次循环中,如果i等于1,就将指针p所指向的元素d[0][1]的值改为*q+2,即数组d的第一个元素加2;否则,就将指针p向下移动一行,同时将指针q指向下一行的第一个元素。最后,程序使用for循环逆序输出数组d的对角线上的元素,即d[2][2]、d[1][1]和d[0][0]。
程序输出的结果为:9 3 2。
阅读全文