C/C++指针问题

我想研究一下指针的指针,编了下面一个程序,怎么运行的时候出现错误,显示内存不能为"written",请高手帮我分析一下,谢谢。#include<iostream.h>vo... 我想研究一下指针的指针,编了下面一个程序,怎么运行的时候出现错误,显示内存不能为"written",请高手帮我分析一下,谢谢。
#include <iostream.h>
void main()
{
int a=0;
int **aa;

*aa=&a;
cout<<aa<<endl;
cout<<*aa<<endl;
cout<<**aa<<endl;
}
即使去掉cout<<aa<<endl;这个语句,也是一样。
展开
 我来答
我狂我笑001
2014-04-21 · TA获得超过711个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:368万
展开全部

aa是一个指针,并且是一个指向指针的指针,那么,*aa就是aa所指向的变量,这个变量当然也是个指针,要得到*aa这个指针所指向的变量,就继续在前面加个星号(*),就是说:**aa指向了最终的那个变量,也就是整型变量a。

当我们要调用**aa时,必须保证*aa不为空且不为野指针;但要调用*aa,又必须保证aa不为空且不为野指针。所以,归根到底,是要先对aa初始化,然后才是对*aa初始化。而你的代码从一开始就对*aa进行初始化,就意味着让aa所指向的变量为&a,可是aa自己都还没有被初始化,又上哪去找aa所指向的变量呢?

所以,这个代码你这样写:

#include <iostream>
using namespace std;
 void main()
{
   int a=0;
   int *b = &a;
   int **aa = &b;    //这里是对aa进行初始化
     
   cout<<aa<<endl;
   cout<<*aa<<endl;
   cout<<**aa<<endl;
}

多重指针的问题本来就很绕,如果你对上面的解释有疑惑的地方,欢迎讨论。

此刻丶即永恒
2014-04-21
知道答主
回答量:10
采纳率:0%
帮助的人:5.8万
展开全部
应该在头文件声明下 写上 using namespace std; 这样才能够在不适用"::"运算符的情况下使用cin和cout..否则应该使用std::cin.. 这样改了之后可以保证能够运行,逻辑是否正确还请你自行检验.望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式