C-指针链接
在本教程中,我们将学习使用C编程语言链接指针变量。
在上一教程"指针和变量"中,我们学习了如何使用指针变量来操作存储在变量中的数据。
现在,我们将链接更多的指针变量以操纵其他变量。
注意!随着链接更多的指针,复杂性增加。
创建一个整数变量
我们将从创建一个整数变量" num"开始,并为其分配值10。
int num = 10;
因此,编写以上代码会发生三件事。
分配了一个内存位置来存储整数变量。
值10存储在存储位置中。
内存位置由变量名num引用。
在上图中显示,整数变量num获取内存位置8280,并且在该位置存储了值10。
为整数变量创建整数指针变量
现在我们将创建一个整数指针变量" ptr",它将指向整数变量" num"。
为此,我们必须将num变量的地址保存在ptr变量中。
要获取变量的地址,我们使用&
运算符的地址。
//integer variable num int num = 10; //pointer variable pointing at num int *ptr = #
在上图中显示,整数指针变量" ptr"获得了内存位置8272,在该位置存储了" num"变量的地址,即8280。
因此,ptr变量指向num变量。
为第一个整数指针变量创建第二个整数指针变量
要创建第二个指针变量以指向第一个指针变量,我们使用以下语法。
dataType **secondPtr = &firstPtr;
在下面的示例中,我们将创建第二个整数指针变量" ptr2",该变量指向第一个整数指针变量" ptr",后者指向整数变量" num"。
int **ptr2 = &ptr;
在上面的图像中,示出了第二整数指针变量" ptr2"获得了存储位置8264,并且在该位置中存储了第一指针变量" ptr"的地址,即8272。
因此,ptr2变量指向ptr变量。
通过第二个整数指针变量更新整数变量的值
为此,我们必须首先获取变量" num"的地址,该地址存储在整数指针变量" ptr"中。
我们使用" *"运算符地址处的值来获取存储在给定内存地址中的值。
为了获取整数变量num的地址,该地址作为值存储在整数指针变量ptr中,我们必须编写以下内容。
*ptr
为了获得整数指针变量" ptr"的地址,该地址作为值存储在整数指针变量" ptr2"中,我们必须编写以下内容。
*(*ptr2)
因此,* ptr2
指向ptr
,* ptr
指向num
。
(ptr2)给我们存储在内存地址(在本例中为8280)的值,该值分配给num变量。
因此,要通过第二个整数指针变量" ptr2"更新存储在整数变量" num"中的值,我们必须编写以下内容。
//updating the value of num via ptr2 *(*ptr2) = 20;
完整的代码
#include <stdio.h> int main(void) { //num variable int num = 10; //ptr pointer variable int *ptr = NULL; //second ptr2 pointer variable int **ptr2 = NULL; //assigning the address of num to ptr ptr = # //assigning the address of ptr to ptr2 ptr2 = &ptr; //printing the value of num - Output: 10 printf("num: %d\n", num); printf("num via ptr: %d\n", *ptr); printf("num via ptr2: %d\n", *(*ptr2)); //updating the value of num via ptr2 printf("Updating value of num via ptr2...\n"); *(*ptr2) = 20; //printing the new value of num - Output: 20 printf("num: %d\n", num); printf("num via ptr: %d\n", *ptr); printf("num via ptr2: %d\n", *(*ptr2)); return 0; }
输出:
num: 10 num via ptr: 10 num via ptr2: 10 Updating value of num via ptr2... num: 20 num via ptr: 20 num via ptr2: 20