
指针含义:指针就可以简单的理解为地址。就是说,可以通过它找到以它为地址的内单元,即信息。
C语言中的地址包括位置信息(纯地址)和它所指向的数据的类型信息。
所以,指针得含义就包含两个方面:一是以存储单元编号表示的纯地址,二是它指向的存储单元的数据类型(int,char,float等)
而在C语言中,对变量的访问有两种方式。
(1)直接访问:按变量名进行访问
(2)间接访问:通过地址进行访问,地址则是变量存在内存中的数的地址。
而指针和指针变量是两个概念,指针是一个地址,指针变量是一个存放地址的变量
例子:
int b =0 int*b=&b
其中*为指针符,&为取地址符。
指针的作用:定义了一个指针变量后,我们便可利用指针求得变量的地址,以及地址上的数。
int*p;
p=&a;
printf("%d", *p); //以整数形式输出指针变量指向的变量的值,即a的值;
printf("%o",p);//以八进制形式输出指针变量p的值,如果p指向a,即输出a的地址。
其中对于地址的理解:每个变量的值都在电脑的储存中,那么每一个值都有它具体唯一的地址。电脑的储存可查,表示为多少位2进制的数,而以上例子中用八进制表示变量的地址,而三位2进制的数可表示一位8进制的数,电脑输出的变量的地址与其内存是相关的,不会大于,而电脑也是以此方式把储存的值传出。
应用指针:
#includevoid changeVariable(int* address) { *address = 10;} int main() { int x = 0; // 定义了一个变量 int* c = &x; // &x 是不是得到了地址 changeVariable2(&x); printf("%d", x); return 0; }
运用指针来改变数值。
1,首先我们定义一个函数,表示将一个指针变量输入,通过函数我们会改变该变量地址上的值。
2,然后我们应用这个函数,首先定义一个变量,然后我们取的x的地址将其等同于int*c,在将这个指针变量输入,我们便改变了x的地址上的值,也就是根本上的改变了x的值。
下面也可看一个错误示范:
#includevoid changeVariable(a) { a = 10; } int main=0; { int x = 0; changeVariable2(x); printf("%d", x); return 0; }
此时我们会发现输出的x还是为零,而并不是10。
在这里我们可以理解为电脑自动复制了一个x的值,将其投入函数进行运算,但x本身地址上的值并没有受到影响,但我们最后输出的x 的值,电脑会认为是x的地址上的数。这也是为什么我们要运用指针变量的原因。