社区
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=编译系统分配的一个特定内存编号。这个编号不会因为指针指向什么数据类型而转变的吧?
...全文
373
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
作业
写回复
配置赞助广告
用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,按照字符串输出?
c语言
整型
变为
字符
指针
,关于
强制
类型转换以及将整数转换为
指针
的有关问题...
当前位置:我的异常网» C语言»关于
强制
类型转换以及将整数转换为
指针
的有关问题关于
强制
类型转换以及将整数转换为
指针
的有关问题www.myexceptions.net网友分享于:2013-02-29浏览:89次关于
强制
类型转换以及将整数转换为
指针
的问题最近看c陷阱与缺陷,里面有节是“空
指针
并非空
字符
串”,由此提出问题。#include void main(){int temp=9...
C
指针
强制
类型转换对所指向的数据的影响
学习C
指针
过程中,受同学启发,思考了一个问题:如果对一个
指针
的类型进行
强制
转换(比如将一个指向
整型
的
指针
强制
转换为指向
字符
的
指针
),那么这个
指针
指向的数据会发生什么样的
变化
呢? 下面的代码实现了对
指针
类型的
强制
转换,并打印出了
指针
类型转换前后
指针
所指向的变量的值: #include
void main(void) { int *p1;
<C语言>若将int型
指针
变量
强制
转化
为char型
指针
变量会发生什么事情?
int *p; //定义int型
指针
变量 char *q1, *q2; //定义两个
字符
型变量 p = (int *)malloc(sizeof(int)); //为p申请一份4字节内存空间 q1 = (char *)p; //将int型
指针
变量p
强制
转化
为char型
指针
变量,并让q1指向p q2 = q1 + 1; //q2指向q1+1的空间 *q1 = 'A'; //q1指向的值为'A' *q2 = 'B'; //q1指向的值为'B' pri.
C++
指针
类型与
强制
转换
C++
指针
类型
指针
,用来描述内存
地址
,并通过提供
指针
操作来实现与内存相关的程序功能。
指针
是一个特殊数据类型,也可以理解为混合数据类型。
指针
具有数据类型信息及数据在内存空间的
地址
。 C++
指针
的类型转换 问题的由来:当我们想打印
指针
地址
时,或是某些需求想得到
地址
值时,我们必须
转化
为
字符
类型给显示组件。比如label等等。。。 问题分析:C++
指针
虽然像int类型或是long i...
C语言:
指针
强制
类型转换
1. 指向
字符
串的
指针
强制
转换成指向
整型
的
指针
: #include #include #include int main(int argc, char** argv) { char buffer[500]; memset(buffer, 0, 500); *(int *)buffer = 123; printf("buffer is %d\n", *buffer
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章