在 C 语言 中,指针 变量保存的是变量的地址,变量 的地址本质上也是一个 整数,因此,我们可以使用 运算符 对指针变量进行运算。
指针变量常用的运算符就是加法和减法运算符,其中,自增 和自减运算符用的最多。对指针变量进行自增或者自减也叫做指针变量的移动。
p++;
参数 | 描述 |
---|---|
p | 指针变量。 |
我们对指针变量 p 进行了自增操作。
使用加法或者减法对指针变量进行运算
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int a = 2021;
int *pa = &a;
long long d = 1099;
long long *pd = &d;
char c = 'a';
char *pc = &c;
printf("before pa = %d, pd = %d, pc = %d\n", pa, pd, pc);
pa = pa+1;
pd = pd+1;
pc = pc+1;
printf("after pa = %d, pd = %d, pc = %d\n", pa, pd, pc);
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先,定义了三个变量,变量的类型分别为 int、 long long 和 char,接着,我们再次定义了三个指针变量,指向了这三个变量。
接着,我们分别将指针变量加 1,最后,我们打印了未加 1 之前的指针变量的值和加 1 之后的指针变量的值,我们可以看到,int 类型的指针变量加了 4,long long 类型的指针变量加了 8, 而 char 类型的指针变量加了 1。
我们可以看到,对指针都进行加 1 操作,但加的具体的数值却是不一样的,而且所加的数值正好等于该指针所指向的变量所占的字节数。
这是因为,如果一个指针指向了 数组 中的某个元素,那么加 1 就表示指向下一个元素,减 1 就表示指向上一个元素,这样指针的加减运算就具有了现实的意义,因此,指针加一减一其实是指针多代表的元素的字节大小。
使用自增和自减对指针进行移动
#include <stdio.h>
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int a = 2021;
int *pa = &a;
long long d = 1099;
long long *pd = &d;
char c = 'a';
char *pc = &c;
printf("before pa = %d, pd = %d, pc = %d\n", pa, pd, pc);
pa = pa++;
pd = pd++;
pc = pc++;
printf("after pa = %d, pd = %d, pc = %d\n", pa, pd, pc);
pa = pa--;
pd = pd--;
pc = pc--;
printf("last pa = %d, pd = %d, pc = %d\n", pa, pd, pc);
return 0;
}
程序运行后,控制台输出如下图所示:
我们可以看到,我们使用自增和自减对指针进行移动,移动的字节数同样是指针所指向的数据类型的字节大小。
在 C 语言中,指针变量保存的是变量的地址,变量的地址本质上也是一个整数,因此,我们可以使用运算符对指针变量进行运算。
指针变量常用的运算符就是加法和减法运算符,其中,自增和自减运算符用的最多。对指针变量进行自增或者自减也叫做指针变量的移动。