前言
众所周知,在C语言基础中,指针基本是最难的一个点,这里给大家分享一下个人对指针的见解。如有不足,还请评论补充。新手上路,大佬轻喷。
以下是本篇文章正文内容,下面案例可供参考
一、指针是什么?
指针在C语言中表示用来指示一个内存地址的计算机语言中的变量或者中央处理器。最大的作用是构造数据结构,使用指针将不连续的内存空间连接到一起。其实指针并不难,但是它特别灵活,可以与函数和数组结合起来用,所以就导致初学者学起来很难。
二、通过代码分析了解指针
在指针中有两个符号&与*。&是用来获取一个变量的地址,又叫取地址符。*是用来获取某地址对应的值,有叫间接运算符,简单来说*就是用来取值的。
1.通过代码了解指针
代码如下:
#include<stdio.h>
int main(){
//声明变量num,赋值为5
int num = 5;
//通过间接运算符和取地址运算符来获取num的值
int value = *(&num);
//打印num的地址
printf("num的地址 = [%p]\n",&num);
//打印num和value的值,发现num和value相等
printf("直接获取num的值 = [%d]\n",num);
printf("通过指针指向地址来获取num的值 = [%d]\n",value);
return 0;
}
1.1运行结果
num's address = [0061fec8]
num's value = [5]
value's value = [5]
--------------------------------
Process exited after 0.5744 seconds with return value 0
请按任意键继续. . .
综上代码第一段和第一行运行结果可以看出&num的作用就是用来获取一个数据存储在计算机中的地址,第二行我们打印出了num的value值,最后一段代码与第三行运行结果可以发现我们通过这个数的地址一样可以获取到他的值。
2.通过代码发现指针的值和地址是指向变量值的哪里
代码如下:
#include<stdio.h>
int main(){
int number = 5;
int *ptr = &number;
//number的地址
printf("输出number的地址 = %p\n",&number);
//number的值
printf("输出number的值 = %d\n",number);
// ptr的地址
printf("输出ptr的地址 = %p\n",&ptr);
//ptr的值
printf("输出ptr的值 = %p\n",ptr);
//ptr所指向的变量的值
printf("输出ptr所指向地址相对于的值 = %d",*ptr);
return 0;
}
2.1运行结果
输出number的地址 = 0061fecc
输出number的值 = 5
输出ptr的地址 = 0061fec8
输出ptr的值 = 0061fecc
输出ptr所指向地址相对于的值 = 5
--------------------------------
Process exited after 2.108 seconds with return value 0
请按任意键继续. . .
综上代码与代码运行结果可以看出,通过指针指向number后,指针ptr的值与number的地址一样。这样我们就可以通过ptr来获取number的值,并对其进行修改等其他操作。
总结
以上就是我个人的见解与解释,只是简单介绍了一下什么是指针和指针的作用和用法。最后,简单说一句:指针就是地址,地址可以存东西,也可以去东西,还可以存地址。