社区
C++ 语言
帖子详情
*p = 5; cout<<*p<
javaca88
2012-05-16 04:11:10
#include "Stdio.h"
#include <iostream.h>
int main(void)
{
int *p=0;
*p = 5;
cout<<*p<<endl;
int a =0;
cin>>a;
return 0;
}
在VC++ 6.0 中出现内存错误,这是为什么?
...全文
500
22
打赏
收藏
*p = 5; cout<<*p<<endl;程序出错
#include "Stdio.h" #include int main(void) { int *p=0; *p = 5; cout<<*p<>a; return 0; } 在VC++ 6.0 中出现内存错误,这是为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
renwotao2009
2012-05-19
打赏
举报
回复
int *p = NULL;
那么p指向的4G虚拟空间前2G用户地址中的首个64K地址空间,这个空间是不能被访问的,只能用于指针置空来防止野指针的出现。
所以我们必须给p一个合法的内存指针。
int temp;
p = &temp;
*p = 5;
nadyhuayue
2012-05-19
打赏
举报
回复
空指针操作,楼主C语言基础不牢。
zslInSz
2012-05-19
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
LZ这一句有错误:
C/C++ code
int *p=0;
右值只能为地址
[/Quote]
0就是NULL 啊,这个问题的错误是指针开始指向了0x00000000地址,地址指向错误。
jiligululalala
2012-05-19
打赏
举报
回复
楼主代码里用的是0,我就直接用0了。
平时用指针,都是用NULL的,NULL的宏定义是
#define NULL ((void*)0)
可以把0改成NULL再分析一遍。
「已注销」
2012-05-19
打赏
举报
回复
[Quote=引用 16 楼 的回复:]
int *p = 0; 这是定义的时候赋值,最好分成两部分来理解
1、int *p; 先定义了一个int型指针
2、p = 0; 再用0给p赋值,就是p所指向的地址是0
而单独的一个
*p = 5; 是赋值,把数字5赋值给*p,是p所指的那块内存。
第一句int *p=0,已经将p指向了一个受保护的地址,这个地址的内容是无法改写的。
第二句*p ……
[/Quote]
ls的这一句int *p=0;的分析我有点疑问:
1)p是一个int型的指针;
2)p里面存放的是0的地址,然后改指针指向0(个人觉得好像是这样的)
后面的ls分析得很好,受教了!哈哈
「已注销」
2012-05-19
打赏
举报
回复
[Quote=引用 16 楼 的回复:]
int *p = 0; 这是定义的时候赋值,最好分成两部分来理解
1、int *p; 先定义了一个int型指针
2、p = 0; 再用0给p赋值,就是p所指向的地址是0
而单独的一个
*p = 5; 是赋值,把数字5赋值给*p,是p所指的那块内存。
第一句int *p=0,已经将p指向了一个受保护的地址,这个地址的内容是无法改写的。
第二句*p ……
[/Quote]
ls的有一句话我有点疑问。就是关于int *p=0;ls分两部分来理解,我觉得好像有点问题,
1)p是一个int型的指针
2)p里面存放的是0的地址,然后改指针指向0(个人觉得应该这样理解)
后面ls分析的很好!受教了!
jiligululalala
2012-05-19
打赏
举报
回复
int *p = 0; 这是定义的时候赋值,最好分成两部分来理解
1、int *p; 先定义了一个int型指针
2、p = 0; 再用0给p赋值,就是p所指向的地址是0
而单独的一个
*p = 5; 是赋值,把数字5赋值给*p,是p所指的那块内存。
第一句int *p=0,已经将p指向了一个受保护的地址,这个地址的内容是无法改写的。
第二句*p = 5,企图更改这个地址里的内容,所以就会报错。
解决方法楼上已经有了。
vbb2008
2012-05-19
打赏
举报
回复
我的基础也不扎实啊,看了后面的解释才明白
半人马座星星
2012-05-19
打赏
举报
回复
#include "Stdio.h"
#include <iostream.h>
int main(void)
{
int b=0;
int *p=0;
p = &b;
cout<<*p<<endl;
return 0;
}
cbzjzsb123
2012-05-19
打赏
举报
回复
这就是你的教科书中写的为什么不能对NULL地址做操作。
mars_man
2012-05-19
打赏
举报
回复
这就是你的教科书中写的为什么不能对NULL地址做操作。
菜头叔
2012-05-18
打赏
举报
回复
[Quote=引用 10 楼 的回复:]
int*p = ﹠5:
[/Quote]
哥哥,可以这样玩么?
int n=5;
int *p=&n;
screwzm
2012-05-18
打赏
举报
回复
int*p = ﹠5:
wint_t
2012-05-16
打赏
举报
回复
p指向为空,那把5赋到哪里去
「已注销」
2012-05-16
打赏
举报
回复
LZ这一句有错误:
int *p=0;
右值只能为地址
CCWinner
2012-05-16
打赏
举报
回复
或者int *p;
int t;
p=&t
这二者作用相同,p指向一个地址
xujin_
2012-05-16
打赏
举报
回复
指针没有指向
自信男孩
2012-05-16
打赏
举报
回复
int *p = 0;该指针指向的地址是系统受保护的,作为用户是没有权限进行修改的。所以,一般会出现段错误。你可以通过malloc申请堆上的空间,然后赋值。
peng_weida
2012-05-16
打赏
举报
回复
*p = 5; //给指针p所指向的内存区域赋值,但p指针为空,没有指向任何内存区域~
W170532934
2012-05-16
打赏
举报
回复
楼上说的对,p只是个指针,如果没有指向某个具体的内存会出错的
加载更多回复(2)
NOIP信息学奥赛通关必备-第一个C++
程序
与
cout
输出语句
NOIP信息学竞赛C++编程基础语法知识--第一个C++
程序
与
cout
输出语句 本课程是符合小学生认知特点的C++编程入门课,讲练结合,提升孩子解决NOIP竞赛试题的能力; 课程案例均采用孩子生活中熟知常见的案例,讲解通俗...
c++
cout
<<*p<<
endl
<<*p++;被重载导致输
出错
误问题原因!
int main() { ...呵呵,首先肯定一下,你说的*p和*p++的值是完全一样的。 你的第一个
程序
的问题不是出在指针上,而是出在C++的流运算符 将你第一个
程序
改为:
cout
cout
之后就可以得
*p++、(*p)++、*(p++)
运行
程序
测验一下:*p++与*(p++)#include<iostream> using namespace std; int main() { //测试*p++ int a[5] = {1,100,200,300}; int *p=a; *p++= 10;
cout
<< "*p: "...
int *p=malloc(100); 求 sizeof(p)
int *p=malloc(100); 求 sizeof(p) sizeof(p) = 4; sizeof(p) 只能测定 指针大小,32位机上得4。 sizeof 不能测定动态分配的数组大小。 strlen 可用于测定动态分配的字符数组长度但不适合int. _msize() 可用于...
程序
改错题
一、下面
程序
有什么错误: swap(int *p1,int *p2) { int *p; *p=*p1; *p1=*p2; *p2=*p; } //这里p是一个野指针,应改为: void swap(int *p1,int *p2) { int p; p=*p1; *p1=*p2; *p2=p; }//...
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章