社区
C++ 语言
帖子详情
整型指针强制转化为字符指针后,自身保存的地址变化了?
Renzhiheng
2011-06-16 12:02:05
int main(){
int i= 10;
int * pInt;
pInt=& i;
char * pChar;
pChar= (char *)pInt;
cout<< pInt<< endl;
cout<< pChar<< endl;
return 0;
}
请问:pInt和pChar为何会不一样?我理解pInt=pChar=&i=编译系统分配的一个特定内存编号。这个编号不会因为指针指向什么数据类型而转变的吧?
...全文
411
14
打赏
收藏
整型指针强制转化为字符指针后,自身保存的地址变化了?
int main(){ int i= 10; int * pInt; pInt=& i; char * pChar; pChar= (char *)pInt; cout<< pInt<< endl; cout<< pChar<< endl; return 0; } 请问:pInt和pChar为何会不一样?我理解pInt=pChar=&i=编译系统分配的一个特定内存编号。这个编号不会因为指针指向什么数据类型而转变的吧?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fox_ocean
2011-06-16
打赏
举报
回复
[Quote=引用 7 楼 renzhiheng 的回复:]
4楼的回复我不是很明白。
类型不同
所以 一个输出地址 一个输出内容
1)pInt是int指针变量,cout输出地址,这个我能理解。
2)pChar是char指针变量,cout为何就不输出地址呢?而是空白?
[/Quote]
cout 会自动识别他的参数类型,pChar是一个字符指针,所以就会是内容,而10转换成字符时是一个不可打印的字符,自然输出是空白了,
就想叫yoko
2011-06-16
打赏
举报
回复
cout 重载的 <<运算符 参数为char*类型时 把这个地址指向的内容按字符串输出 直到遇到'\0'
Renzhiheng
2011-06-16
打赏
举报
回复
4楼的回复我不是很明白。
类型不同
所以 一个输出地址 一个输出内容
1)pInt是int指针变量,cout输出地址,这个我能理解。
2)pChar是char指针变量,cout为何就不输出地址呢?而是空白?
就想叫yoko
2011-06-16
打赏
举报
回复
改成
printf("%p\t%p\n", pChar, pInt);
就能看到他们存储的都是i的地址
cout char* 输出 是把i地址的内容当字符串处理 输出直到遇到'\0'
jernymy
2011-06-16
打赏
举报
回复
[Quote=引用 2 楼 liao05050075 的回复:]
自然是一样的
只是输出的时候,你用cout 去输出一个char*,它默认按字符串来输出, 所以你看到的结果不同
你改成
printf("%p,%p", pInt, pChar)看看
[/Quote]
建议使用printf
c_losed
2011-06-16
打赏
举报
回复
[Quote=引用 3 楼 renzhiheng 的回复:]
我理解,pChar=pInt=int变量i的地址啊。
[/Quote]
类型不同
所以 一个输出地址 一个输出内容
Renzhiheng
2011-06-16
打赏
举报
回复
我理解,pChar=pInt=int变量i的地址啊。
liao05050075
2011-06-16
打赏
举报
回复
自然是一样的
只是输出的时候,你用cout 去输出一个char*,它默认按字符串来输出, 所以你看到的结果不同
你改成
printf("%p,%p", pInt, pChar)看看
ouyh12345
2011-06-16
打赏
举报
回复
cout<< pChar<< endl;
不是输出pChar的地址
zyc_glboy
2011-06-16
打赏
举报
回复
[Quote=引用 13 楼 renzhiheng 的回复:]
那cout<<pInt的时候,为何不是将指针指向的int变量a=10,按照int型输出呢?
cout的意思,是不是:
1)cout<<int指针时,输出指针保存的地址值。
2)cout<<char指针时,输出指针所指向变量的值。
有什么办法,能够cout一个char真实的指针?
[/Quote]
重载<<
Renzhiheng
2011-06-16
打赏
举报
回复
那cout<<pInt的时候,为何不是将指针指向的int变量a=10,按照int型输出呢?
cout的意思,是不是:
1)cout<<int指针时,输出指针保存的地址值。
2)cout<<char指针时,输出指针所指向变量的值。
有什么办法,能够cout一个char真实的指针?
赵4老师
2011-06-16
打赏
举报
回复
摒弃cout;使用printf!
liao05050075
2011-06-16
打赏
举报
回复
将指针所指向的变量i,按照字符串输出
Renzhiheng
2011-06-16
打赏
举报
回复
现在的问题是:{cout<< pChar}的时候。pChar是个指向char数据类型的指针,那么是将指针保存的地址按照字符串输出,还是将指针所指向的变量i,按照字符串输出?
从0开始学c语言-20-
指针
与
地址
、
指针
类型、野
指针
、
指针
运算
归根结底,
指针
就是一个存放
地址
的变量,本质上
指针
是个
地址
变量。
指针
就是有指向性的
地址
,
地址
在运用的时候便有了指向性,变为
指针
。再或者说,因为
地址
需要一个变量来
保存
或者表示,所以便出现了
指针
。存放在
指针
中的值都被当成
地址
处理。
指针
是用来存放
地址
的,
地址
是唯一标示一块
地址
空间的。
指针
的大小在32位平台是4个字节,在64位平台是8个字节。
【嵌入式——C语言】
指针
嵌入式-C语言-
指针
C_内存_内存
地址
_
指针
C 和 C++ 是系统级编程语言,它们的设计目标之一是允许开发者直接与硬件交互并高效地管理资源。
指针
提供了极高的效率和灵活性,特别是在性能敏感的应用中。mallocfreenewdeleteJava 和 Python 中也有类似的功能(如对象引用和垃圾回收),但这些功能是由运行时环境自动管理的,程序员无法直接干预。
指针
是实现复杂数据结构(如链表、树、图等)的核心工具。在 Java 中,类似的结构可以通过对象引用来实现,但底层的内存管理和
指针
操作是由 JVM 自动完成的。
指针
基础部分入门
文章系统讲解了C语言中
指针
的核心概念与应用。首先介绍了内存单元与
地址
的基本原理,说明
指针
本质是内存
地址
。然后详细解释了
指针
变量的定义、初始化和解引用操作,强调
指针
变量大小与平台相关而与类型无关。文章通过代码示例演示了
指针
类型的意义,包括访问权限和
指针
运算的差异。重点分析了
指针
的三种运算方式(加减整数、
指针
减
指针
、关系运算)及其应用场景,如数组遍历和
字符
串反转。最后讨论了传值调用与传址调用的区别,指出
指针
在函数参数传递中的重要作用。全文通过丰富实例揭示了
指针
在内存操作和高效编程中的关键作用。
c语言空
指针
可以寻址吗,杂记之C语言之
指针
(一)
//#用
指针
注意两点。1.初始化 2、空
指针
、野
指针
和void 型
指针
/*不能出现野
指针
,可以出现空
指针
和void 型
指针
,空
指针
不能访问。void 型
指针
只有通过
强制
类型转换后才可以访问,否则也不能访问 */#includeint main(void){int i;int *pi=&i;//表示定义一个指向int型的变量
指针
pi,并用i的
地址
(为一常数)来初始化pi/*虽然pi的
地址
跟p...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章