C语言指针运算

C语言指针运算教程

C 语言 中,指针 变量保存的是变量的地址,变量 的地址本质上也是一个 整数,因此,我们可以使用 运算符 对指针变量进行运算。

指针变量常用的运算符就是加法和减法运算符,其中,自增 和自减运算符用的最多。对指针变量进行自增或者自减也叫做指针变量的移动。

C语言指针变量运算

语法

p++;

参数

参数 描述
p 指针变量。

说明

我们对指针变量 p 进行了自增操作。

案例

C语言指针变量运算

使用加法或者减法对指针变量进行运算

#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; }

程序运行后,控制台输出如下图所示:

06_C语言指针变量运算.png

我们首先,定义了三个变量,变量的类型分别为 intlong longchar,接着,我们再次定义了三个指针变量,指向了这三个变量。

接着,我们分别将指针变量加 1,最后,我们打印了未加 1 之前的指针变量的值和加 1 之后的指针变量的值,我们可以看到,int 类型的指针变量加了 4,long long 类型的指针变量加了 8, 而 char 类型的指针变量加了 1。

我们可以看到,对指针都进行加 1 操作,但加的具体的数值却是不一样的,而且所加的数值正好等于该指针所指向的变量所占的字节数。

这是因为,如果一个指针指向了 数组 中的某个元素,那么加 1 就表示指向下一个元素,减 1 就表示指向上一个元素,这样指针的加减运算就具有了现实的意义,因此,指针加一减一其实是指针多代表的元素的字节大小。

C语言指针移动

使用自增和自减对指针进行移动

#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; }

程序运行后,控制台输出如下图所示:

07_C语言指针变量运算.png

我们可以看到,我们使用自增和自减对指针进行移动,移动的字节数同样是指针所指向的数据类型的字节大小。

C语言指针运算教程总结

在 C 语言中,指针变量保存的是变量的地址,变量的地址本质上也是一个整数,因此,我们可以使用运算符对指针变量进行运算。

指针变量常用的运算符就是加法和减法运算符,其中,自增和自减运算符用的最多。对指针变量进行自增或者自减也叫做指针变量的移动。