c++指针初始化问题

c++指针初始化问题c 中的指针是一个很经典的用法 但是也是最容易出错的 比如定义了一个指针 必须对其进行初始化 不然这个指针指向的是一个未知的内存地址 后续对其操作的时候 会报错 这只是其次 最让人头疼的就是指针错误问题 往往编译的时候可以通过 在程序运行的时候 就会出现异常 如果对程序不是很熟悉 则不是很容易找到问题所在 我最近就遇到过很多这样的问题 定义了一个结构体指针 使用的时候忘记初始化 导致在后边使用的

c++中的指针是一个很经典的用法,但是也是最容易出错的,比如定义了一个指针,必须对其进行初始化,不然这个指针指向的是一个未知的内存地址,后续对其操作的时候,会报错。这只是其次,最让人头疼的就是指针错误问题,往往编译的时候可以通过,在程序运行的时候,就会出现异常,如果对程序不是很熟悉,则不是很容易找到问题所在,我最近就遇到过很多这样的问题,定义了一个结构体指针,使用的时候忘记初始化,导致在后边使用的时候程序报异常。下面就总结一下c++指针初始化的一些方法,

以及我自己遇到的一些问题以及心得体会。

一.c++指针初始化的一般方法:

1.将一个已经在内存中存在变量的地址传递给定义的指针,这个指针就指向这个变量的内存地址(相同的数据类型),完成初始化。

比如:

int a=2; int *b=&a;

2.利用new开辟一块地址空间

struct test{ int a; int b; }*t; void main() { int c=0; test *t=new test(); c=t->a; }

使用 new开辟的空间,记得使用delete释放,因为new出来的是返回的堆的空间,堆的空间是不会自动释放的,存放变量的栈才会自动释放。delete释放其实只是释放了申请的这块内存空间,但是指针并没有没撤销,指针还是指向这块地址,但是不可用(靠人品吃饭的有可能可以用),是非法的。所以用delete释放掉一块堆内存时,应该自己手动将指针设置为NULL。

3.把指针设置为NULL或者0

这样做一般只是为了没有具体初始化的时候做的,这样避免了野指针,后面可以使用if(指针==NULL)来判断,然后再进行操作。

二.自己遇见的问题

我在使用结构体指针的时候,忘记将结构体指针初始化,导致后面访问结构体成员变量的时候出现错误(那种编译没错,执行出错的问题),后来将指针使用new初始化解决,还有一点就是,全局的变量名称与局部变量名称不要一样。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205637.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:33
下一篇 2026年3月19日 下午5:33


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号