📜  带有示例的C中的指针表达式(1)

📅  最后修改于: 2023-12-03 15:39:26.608000             🧑  作者: Mango

带有示例的C中的指针表达式

在 C 语言中,指针是一种非常重要的数据类型。指针存储了一个变量的地址,通过指针,我们可以直接访问该地址上的值。指针表达式是通过指针操作符和运算符计算出一个指针值的表达式。本文将为你介绍 C 语言中的指针表达式,并提供示例代码。

基本指针表达式
1. 取地址运算符(&)

& 运算符用于获取一个变量的地址。例如,下面的代码将获取 a 变量的地址:

int a = 10;
int* ptr = &a;
2. 解引用运算符(*)

* 运算符用于获取指针所指向的变量的值。例如,下面的代码将获取 ptr 指针所指向的值:

int a = 10;
int* ptr = &a;
int b = *ptr;   // b的值等于a的值,即10

我们也可以通过解引用运算符来修改指针所指向的变量的值,例如:

int a = 10;
int* ptr = &a;
*ptr = 20;  // a的值现在为20
指针运算表达式

指针作为一种数据类型,可以进行各种运算。下面列举了 C 语言中的一些指针运算表达式:

1. 指针加整数

指针加整数运算是将指针值加上一个整数。例如,下面的代码将指针 ptr 加上 1,然后返回新的指针值:

int a[5] = {1, 2, 3, 4, 5};
int* ptr = a;      // 等价于 int* ptr = &a[0];
int* ptr2 = ptr+1; // ptr2指向a[1]
2. 指针减整数

指针减整数运算是将指针值减去一个整数。例如,下面的代码将指针 ptr 减去 1,然后返回新的指针值:

int a[5] = {1, 2, 3, 4, 5};
int* ptr = &a[4];  // ptr指向a[4]
int* ptr2 = ptr-1; // ptr2指向a[3]
3. 指针之间的减法

两个指针相减的结果为它们之间相差的元素个数。例如,下面的代码计算了指针 ptr2ptr 之间的元素个数:

int a[5] = {1, 2, 3, 4, 5};
int* ptr = a;      // 等价于 int* ptr = &a[0];
int* ptr2 = ptr+3; // ptr2指向a[3]
int count = ptr2 - ptr;  // count等于3
4. 指针与整数比较

指针与整数进行比较时,比较的是指针值和整数值的大小关系。例如,下面的代码比较了指针 ptr 和整数 a 的大小关系:

int a[5] = {1, 2, 3, 4, 5};
int* ptr = a;      // 等价于 int* ptr = &a[0];
if (ptr < &a[2]) {
    // ...
}
5. 三目运算符

三目运算符也可以用于指针类型的变量。例如,下面的代码根据指针 ptr 是否为 NULL 来选择不同的值:

int* ptr = NULL;
int value = (ptr ? *ptr : 0);
总结

本文介绍了 C 语言中的指针表达式,包括基本指针表达式和指针运算表达式。希望这些内容能够对你理解和使用指针有所帮助。