C语言中‘*‘和‘&‘

    科技2025-06-08  7

    在C语言中,每个变量都是一个内存位置,并且每个内存位置都定义了其地址,可以使用&运算符(&)进行访问,该地址表示内存中的地址。 A指针是一个变量,其值是另一个变量的地址,即存储位置的直接地址。像任何变量或常量一样,你必须在使用指针存储任何变量地址之前声明一个指针。

    int *ip; /* pointer to an integer */ double *dp; /* pointer to a double */ float *fp; /* pointer to a float */ char *ch /* pointer to a character */

    所有指针的值的实际数据类型(无论是整数,浮点数,字符还是其他形式)都是相同的,即表示内存地址的十六进制数字。不同数据类型的指针之间的唯一区别是指针指向的变量或常量的数据类型。

    有一些重要的操作,我们将非常频繁地在指针的帮助下进行操作。(a)我们定义了一个指针变量,(b)将变量的地址分配给了指针,并且(c)最后访问了指针变量中可用地址处的值。这是通过使用一元运算符*完成的,该运算符返回位于变量操作数指定地址处的变量的值。

    #include <stdio.h> int main () { int var = 20; /* actual variable declaration */ int *ip; /* pointer variable declaration */ ip = &var; /* store address of var in pointer variable*/ printf("Address of var variable: %x\n", &var ); /* address stored in pointer variable */ printf("Address stored in ip variable: %x\n", ip ); /* access the value using the pointer */ printf("Value of *ip variable: %d\n", *ip ); return 0; } //编译并执行上述代码后,将产生以下结果- Address of var variable: bffd8b3c Address stored in ip variable: bffd8b3c Value of *ip variable: 20

    通过上面的例子就可以看出,&var的结果实际就是变量var所存储的地址值,将值赋给ip,最后的*ip就是取值,即到ip所表示的地址出去取出其对应的值。

    在没有确切地址要分配的情况下,将NULL值分配给指针变量始终是一个好习惯。这是在变量声明时完成的。分配了NULL的指针称为空指针。不然就会产生所谓的野指针。

    Processed: 0.011, SQL: 8