C语言中的指针
什么是指针
指针是一个变量,用来存储内存地址
变量在内存中的地址是以类似数字索引存储的。所有的指针变量,不管任何类型,在内存中占用相同的空间。
与指针相关的运算符
&:后面跟变量名时(&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 Basics in C
评论已关闭