社区
C++ 语言
帖子详情
C++中的指针问题
pingju020
2008-11-10 04:15:22
问题是这样的:
大家都知道在C++中,可以这样定义指针:char *P="world";
这样的话,实际上是定义了一个指针常量。
但是绝对不可以这样定义:int *p; *p=4;
这两者的差别到底是什么机制导致的??
...全文
185
22
打赏
收藏
C++中的指针问题
问题是这样的: 大家都知道在C++中,可以这样定义指针:char *P="world"; 这样的话,实际上是定义了一个指针常量。 但是绝对不可以这样定义:int *p; *p=4; 这两者的差别到底是什么机制导致的??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kdy88120
2008-11-11
打赏
举报
回复
你的这个问题,去看一下new语句的说明就知道是在回事了
int *p=new int;
*p=4;
...
...
delete p;
这样就可以了
shizhusz110
2008-11-11
打赏
举报
回复
int *p;*p=4;
没给分配空间,不能直接赋值
pingju020
2008-11-11
打赏
举报
回复
[Quote=引用 4 楼 yayafu 的回复:]
是编译器机制导致的啊,char *P="world"会分配一块存储区,但int *p; *p=4不会为4分配存储区;
[/Quote]
这个好象不是编译器的机制导致的吧。
好像是C++标准的问题吧。
我目前真是想搞明白的是C++的标准到底是怎么规定一些常量的处理方式的,
比如上面的常量字符串,实际上编译器是将该字符串先存储到常量区,然后再让指针p指向这个区。那如常量4等又是怎么处理的?
overbai
2008-11-11
打赏
举报
回复
前面是常量区间,一开始就分配了内存单元,后面的只是一个指针,一开始没说明指向哪个单元,后面有怎么可以给这个单元里赋值呢
dzc8866
2008-11-10
打赏
举报
回复
[Quote=引用 13 楼 dlyluck2008 的回复:]
char *p这里的p是一个指针,如果要对它赋值的话,等式的右边一定要是一个地址值才行。
char *p="world",要记得在C/C++中是没有字符串的,只有字符数组,而"world"字符串实质上它是一个字符数组,它返回的是该字符数组的首地址,所以可以用来为指针P赋值。
而int *p,*p=4这样的定义则是错误的,int *p,在p没有被初始化的时,它默认指向的是0xcccccccc,这个地址里面可是什么内容也没有的哦,*p则是取指针p所指向的地址里面的值…
[/Quote]
学习了UP
shuaiwang_01
2008-11-10
打赏
举报
回复
"world"在内存中为其分配了存放的空间,因而可以用指针指向它。
而4在内存没为它分配空间,因而指针p不知指向何方,所以错误!
三翔馆主
2008-11-10
打赏
举报
回复
前面是常量区间,一开始就分配了内存单元,后面的只是一个指针,一开始没说明指向哪个单元,后面有怎么可以给这个单元里赋值呢
冻结
2008-11-10
打赏
举报
回复
int *p,a;
a=4;
p=&a;
这个时候*p的结果就是4.(*p=4)
wangqr1984
2008-11-10
打赏
举报
回复
看反汇编代码!看反汇编代码!
dlyluck2008
2008-11-10
打赏
举报
回复
char *p这里的p是一个指针,如果要对它赋值的话,等式的右边一定要是一个地址值才行。
char *p="world",要记得在C/C++中是没有字符串的,只有字符数组,而"world"字符串实质上它是一个字符数组,它返回的是该字符数组的首地址,所以可以用来为指针P赋值。
而int *p,*p=4这样的定义则是错误的,int *p,在p没有被初始化的时,它默认指向的是0xcccccccc,这个地址里面可是什么内容也没有的哦,*p则是取指针p所指向的地址里面的值,就算里面有内容,那你又怎么会知道它一定是4呢?
不过可以这样定义:
int *p,a;
a=4;
p=&a;
这个时候*p的结果就是4.(*p=4)
yndfcd
2008-11-10
打赏
举报
回复
这两个没有可比性.
要知道 C/C++是没有字符串的,只有字符数组.所以前面一个是一个数组,而后面是一个常量,两个是有区别的.
tsoslience
2008-11-10
打赏
举报
回复
[Quote=引用 8 楼 jeaaa 的回复:]
char *P="world";
这个是把指针地址指向字符串的第一个字符。
int *p; *p=4;
这个只是定义了个指针,并没有初始化指针的地址。不知道4存到哪去了。
[/Quote]
o
P_ghost
2008-11-10
打赏
举报
回复
接分接分
ylx1982
2008-11-10
打赏
举报
回复
很明显,大家还是很清楚这个问题的哦!
jeaaa
2008-11-10
打赏
举报
回复
char *P="world";
这个是把指针地址指向字符串的第一个字符。
int *p; *p=4;
这个只是定义了个指针,并没有初始化指针的地址。不知道4存到哪去了。
山的那边还是山~
2008-11-10
打赏
举报
回复
"world", 在C++的返回的是该串的首地址.该串的内存空间已由编译器分配.
huang_dy
2008-11-10
打赏
举报
回复
不管怎样指针必须要指向确定的内存地址才安全。
wudeshou82666
2008-11-10
打赏
举报
回复
指针P没有分配内存!你往它赋值得到运行是错误!
而常量字符串存储在程序的内存的常量区
已经存在的合法的地址!所以定义的指针可以指向它
yayafu
2008-11-10
打赏
举报
回复
是编译器机制导致的啊,char *P="world"会分配一块存储区,但int *p; *p=4不会为4分配存储区;
帅得不敢出门
2008-11-10
打赏
举报
回复
char *P="world"; 指向常量字符串 注意是常量字符串.
加载更多回复(2)
关于
C++
中
的野
指针
和
指针
悬挂
问题
在
C++
中
,野
指针
是指指向无效或未定义内存地址的
指针
。deletefree。
C和
C++
中
的野
指针
问题
文章目录1 C和
C++
中
的野
指针
问题
1.1 野
指针
的概念1.2 野
指针
的由来1.3 杜绝野
指针
的基本原则2 C和
C++
中
的常见内存错误2.1 常见内存错误2.2 内存操作的基本规则 1 C和
C++
中
的野
指针
问题
1.1 野
指针
的概念 野
指针
的概念:
指针
变量
中
的值是非法的内存地址,进而形成野
指针
。 野
指针
不是NULL
指针
,是指向不可用内存地址的
指针
。 NULL
指针
并无危害,很好判断,也很好调试。...
c/
c++
中
的
指针
的应用及注意
问题
核心提示:
指针
是c/
c++
学习一个比较让人头痛的
问题
,在程序设计过程
中
,
指针
也往往是产生隐含bug的原因。下面就来谈谈
指针
的应用以及需要注意的一些
问题
,里面也许就有你平时没有注意到的
问题
,希望能帮助各位读者理解好
指针
。 一、我们先来回忆一下
指针
的概念吧,方便下面的介绍
指针
是存放地址值的变量或者常量。 例如:int a=1;&a就表示
指针
常量(“&”表示取地...
C++
中
的野
指针
问题
文章目录 1 C和
C++
中
的野
指针
问题
1.1 野
指针
的概念 1.2 野
指针
的由来 1.3 杜绝野
指针
的基本原则 2 C和
C++
中
的常见内存错误 2.1 常见内存错误 2.2 内存操作的基本规则 1 C和
C++
中
的野
指针
问题
1.1 野
指针
的概念 野
指针
的概念:
指针
变量
中
的值是非法的内存地址,进而形成野
指针
。 野
指针
不是NULL
指针
,是指向不可用内存地址的
指针
。 NULL
指针
并无危害,很好判断,也很好调试。 C语言
中
无法判断一个
指针
所保存的地址是否合法。 1.2 野
指针
的由来 如下情况可能导致野
指针
的出
C++
中
的野
指针
和内存泄漏
问题
文章目录野
指针
问题
什么是野
指针
野
指针
问题
成因内存泄漏智能
指针
野
指针
问题
什么是野
指针
在
c++
中
,使用
指针
是需要解引用去访问一块内存地址的。当一个
指针
变量指向的地址是非法地址时,就会出现野
指针
问题
。一般我们在写代码的时候,会对
指针
变量有一个判空处理,但是对于野
指针
时,是不会被 ‘ ptr == nullptr ’
中
识别出来的。会导致在接下来的代码逻辑
中
,造成非法访问,异常,导致进程崩溃退出等等的
问题
。 野
指针
问题
成因 野
指针
问题
也是一个在实际代码工作
中
很常见的一个
问题
,也会不同的情况导致野
指针
问题
出现:
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章