C语言之指针基础概念
今天就写一下关于C语言指针的一些感想吧。
很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子。其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了。
首先简介一下指针的概念好了。指针本身也是一个变量,只不过这个变量的值比较特殊,它不是常规的整型数或者浮点数,而是指向另一个变量地址的值。通过指针的值可以知道另一个变量的地址以及存在该地址中的具体数值(该数值可以是整型,浮点型,结构体,甚至也可以是一个指针),通过指针得到另一个变量的具体值的方法叫做引用。基本概念大概就是这么点。
其次通过上面的概念可以引出下面的内容。”*“有两个作用,一个是定义时出现的”*“代表这是一个指针变量,而在赋值的时候出现的”*“代表这是取出该地址所存储的值。单单这么说可能没概念,那就举个例子好了。
int a=1;//定义一个值为1的变量a
int *p=&a;//定义一个指针类型的变量p指向变量a,或者理解为将变量a的地址值赋给了指针变量p
printf("输出指针p的引用值为:%d\n",*p);//和上一行代码中的*p不同,这里的*p代表的是取出指针变量所指向地址中所存储的值
所以,输出的内容为:”输出指针p的引用值为:1“。
那么由此还可以得出下面两句等价代码:
a=10;//给a赋值为10
*p=10;//给指针p指向的地址的变量赋值为10,因为p指向a,所以*p就是a。所以这两句代码等价
下面就给出完整的可运行C语言代码:
#include<stdio.h>
int main()
{
int a=1;
int *p=&a;
printf("输出指针p的引用值为%d\n",*p);
*p=10;
printf("输出*p的值为:%d,此时a的值为%d\n",*p,a);
printf("输出指针p的值,即变量a的地址值为:%d\n",p);
return 0;
}