您的位置首页百科知识

指针变量的如何初始化?

指针变量的如何初始化?

*p=ival 表示*p的内容是ival(可以是个值或是空间)定义的时候可以写成p=&ival,p的值是ival的地址值oxcdcdcdcd一类的东西;有时候在函数调用的时候,今后会用很多,会用到**p,作为指针的形参传递

指针容易出错是 如果p指向一块找不到的空间,取*p会出错的,或是p和*p用错地方了,很容易出错。只有自己多练,理解指针的原理才会发现其好用的地方。建议你练练单链表去掌握指针的基本使用。

任何变量,都有两个信息:一是它所存放的数据,二是它的存放位置(即地址)。地址,在整个内存中,都是唯一存在的。没有重复的两个地址。

一个变量一经定义(申请)它的地址就已经确定了,是一个常数,不能改变的。而它存放的数据是可以改变的。

指针,本质上,也是一个变量,它也具有这两方面的信息:数据、地址。它的地址同样是固定的,不可修改的。它的数据比较特殊,存放的是其它变量的地址。同样,也可以存放其它指针的地址,因为指针也是变量。

指针的赋值,是指给指针存放的数据赋值。所以,这个数据必须是地个地址。

例如:int a; int *p = &a // 相当于 int *p; p = &a

再如:int a[] = {1,2,3}; int *p = a; //这里a是数组名,也就是数组的首地址。

在int*p=ival中,p就是一个指针,它的值是ival,不过一般不这么用,不能给指针赋确定的值,还是拿你刚刚的例子,用的最多的是这样:int*p; int a=10; p=&a ‘&’ 是取地址的符号。

指针可以节省空间,一个指针占用的大小是确定的4位,而且指针也比较方便,它指向的是数据存储的地址,指针的实质也是地址。

因为指针一定要指向具体的地址才有效,如果程序一长,就很容易造成指针悬空,或者两个指针指向同一地址,如果这个时候对它们操作就会造成很多错误。

最关键的是,指针很容易破坏封闭性,如果你想要数据私有,最好避免指针。

弄不懂也没关系,指针比较难,我也是花了很久才慢慢想通的。

关于 C/C++指针 是c/c++语言的难点之一

至于指针的概念大家都知道 初始化有很多种方式 甚至在很多库源代码中我们可以看到没有初始化的指针 这是指针的灵活性所至

在应用开发中 指针的使用原则是:

声明指针

要么初始化为指向有效地址; 比如: int i; int *pi = &i

要么 初始化为指向空地址(即vnullptr) 地址; 比如: int *pi = nullptr; 备注:(关于 nullptr 请查阅 C++ 最新规范,就代码中 使用 NULL)

注意将 指针和引用区分。