什么是指针

指针是一个变量,用来存储内存地址

变量在内存中的地址是以类似数字索引存储的。所有的指针变量,不管任何类型,在内存中占用相同的空间。

与指针相关的运算符

&:后面跟变量名时(&var_name),&给出该变量的地址。例如&nurse表示变量nurse的地址
*: 后跟一个指针名或者地址时,*给出储存在指针指向地址上的值。

nurse = 22;
prt = &nurse;    // 指向 nurse 的指针
val = *ptr;    // 把 ptr 指向的地址上的值赋给 val
// 执行以上3条语句的最终结果是把22赋给val

函数中的指针参数

/*指针参数*/
#include <stdio.h>

// 函数原型
void test(int* ptr);

int main(void) {
    int var = 10; // 定义一个整型变量
    int* ptr = &var; // 定义一个指针并指向变量地址

    printf("指针参数在函数中的使用\n");

    printf("原始变量var的地址是值是:%d 内存地址是:%p\n", var, &var);

    test(ptr);

    printf("函数中定义的指针本身是:%p 它本身的内存地址是:%p 它地址上的值(就是var的值)是:%d 它自身地址上的值是:%p\n\n", ptr, &ptr, *ptr, *&ptr);

    printf("由此可见,在不同函数中,指针本身的内存地址是不一样的,但是它们地址上的值是一样的");

    return 0;
}

/// 传入一个指针
/// 打印指针的地址和指针的值
void test(int* ptr) {
    printf("传入的参数指针本身是:%p 它本身的内存地址是:%p 它地址上的值(就是var的值)是:%d 它自身地址上的值是:%p\n\n", ptr, &ptr, *ptr, *&ptr);
}

在Windows上的运行结果:
pointer.png


参考资料:
Pointer Basics in C

标签: none

评论已关闭