|
发表于 2016-9-10 13:47:57
|
显示全部楼层
本帖最后由 18813974736 于 2016-9-10 13:53 编辑
指针跟指针变量是两码事
概念性的问题吧
指针就是内存的地址,即指针就是地址,地址就是指针; 同时它也是一种数据类型
比如: char * 、 int * 、 char ** 、int ** 等等;
指针变量就是变量,通常我们都会把指针变量简称为指针
int *p; //定义了一个 int * 型(指针中的一种)的指针变量 p;
例如这样没有给定已知指向的指针就是野指针;int *p = NULL 也是野指针
int *p; 跟 int a; 有什么区别吗? 除了类型不一样 没啥区别,只要你定义了变量;当代码执行到这句时就会给它分配一个内存空间;只不过我们定义的指针变量是用来存储我们需要指向的已知的内存地址才有意义。
例如:
int *p; int a;
a = 10;
p = 10;//没问题,野指针本身是可以赋值的,就像平时的变量一样;但是这样没有意义
但是
*p = 10;//这就会出错了,在使用指针时, 这个 * 代表操作指针变量p所指向的内存;而这里我们并没有给指针一个已知的指向,当我们操作它指向的内存就会出错。
例如这样才有意义:
p = &a;//指针变量p自己的内存就存储了 变量a的地址
*p = 100;//操作指针变量p所指向的内存(即变量a的内存)
指针存在的意义就是为了间接赋值(即要操作它指向的内存才有意义);而它所指向的内存又是要已知的才合法。
|
|