社区
C++ 语言
帖子详情
指针的使用?
songlaf
2006-04-18 11:57:57
有这两段代码:
代码A:
char *ptr = "How to do it!";
while(*ptr++)
{
cout<<ptr<<endl;
}
代码B:
int i = 100;
int *ptr = &i;
while(*ptr++)
{
cout<<ptr<<endl;
}
为什么,代码A输出的是字符串,而不是地址,可是代码B输出的是地址?
另外为什么可以用char *ptr = "hello hi";而不可用int *prt = 100;
...全文
166
11
打赏
收藏
指针的使用?
有这两段代码: 代码A: char *ptr = "How to do it!"; while(*ptr++) { cout<<ptr<<endl; } 代码B: int i = 100; int *ptr = &i; while(*ptr++) { cout<<ptr<<endl; } 为什么,代码A输出的是字符串,而不是地址,可是代码B输出的是地址? 另外为什么可以用char *ptr = "hello hi";而不可用int *prt = 100;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lei001
2006-04-19
打赏
举报
回复
char *ptr = "How to do it!";
先分配一个常量存放“How to do it!”,然后让ptr指向这个变量;
而int *prt = 100,就没有这么好的“运气”了,不会分配一个变量来存放100,
因此无法知道prt指向谁的,因此出错的
NUmen123
2006-04-19
打赏
举报
回复
char *ptr = "hello hi";是编译器将字符串常量的第一个字符地址赋给字符指针作为初始值。并不是赋值给指针~。"hello hi"不属于指针ptr,反过来是指针ptr依附它。
int *prt = 100;是将一个整形数赋给指针~这是错误的~~
archerchun
2006-04-19
打赏
举报
回复
第二段程序只是输出指针指向的地址,所以不是错误的
lxfxw
2006-04-19
打赏
举报
回复
楼上讲的对,代码是一个明显并且严重的错误!!
我很奇怪,这样的代码能正常运行吗????int型越界
road1981
2006-04-19
打赏
举报
回复
代码A:
char *ptr = "How to do it!";
while(*ptr++)
{
cout<<ptr<<endl;
}
这段代码中,ptr始终指向一个c风格的字符串,所以输出当然就是字符串了
代码B:
int i = 100;
int *ptr = &i;
while(*ptr++)
{
cout<<ptr<<endl;
}
这段代码中,while(*ptr++)实际上会导致指针指向未知的内存空间,属于明显的错误
Muf
2006-04-19
打赏
举报
回复
[unsigned] char* 是C运行库特殊处理的。在C中认为是字串;因此表现不能与int*等同。
bobojing8841
2006-04-19
打赏
举报
回复
ostream& os<<(ostream&,char*)已经重载过,所以能通过输入指针输出字符串
逸学堂
2006-04-19
打赏
举报
回复
代码B:
int i = 100;
//int *ptr = &i;
int *ptr = i; // 而不是地址。
while(*ptr++)
{
cout<<ptr<<endl;
}
sankt
2006-04-19
打赏
举报
回复
1.
char *ptr = "How to do it!";
while(*ptr++)
{
cout<<static_cast<void*>(ptr)<<endl; //这样就ok了
}
2.
另外为什么可以用char *ptr = "hello hi";而不可用int *prt = 100;
//============
char *ptr = "hello hi";//这个意味ptr指向"hello hi"的首地址 它实质是const char *ptr="hello hi";
int* ptr =100 //这是错误的,
必须要这样写:
int i=100;
int* p = &i;
awl005
2006-04-19
打赏
举报
回复
这里错了
char* a='a';
cout<<a;
改成
char a='a'
char* pa=&a
cout<<pa
awl005
2006-04-19
打赏
举报
回复
为什么,代码A输出的是字符串,而不是地址,可是代码B输出的是地址?
因为C没有基本字符串类型,所以它用元素为字符类型,最后一个元素为0的数组来"模拟"字符串,既然模拟字符串,输出它的时候总不能给出地址,而是将这个数组的元素一个一个都输出来,直到碰到0
就算是这样:
char* a='a';
cout<<a;
也不会输出地址,大多数情况下是a后面跟着一堆乱七八糟的东西,会停下来是因为碰到0了
另外为什么可以用char *ptr = "hello hi";而不可用int *prt = 100;
"hello hi"的类型就是char*(严格来说是 const char* const), 而100的类型是int
什么是
指针
压缩?如何开启和关闭
指针
压缩?为什么要进行
指针
压缩?有哪些注意的地方?
什么是
指针
压缩呢? 从jdk1.6开始在64位的操作系统中就JVM就支持
指针
压缩。 如何开启和关闭
指针
压缩? jvm配置参数:UseCompressedOops,compressed--压缩、oop(ordinary object pointer)--对象
指针
。启用
指针
压缩...
什么是
指针
?为什么要用
指针
?
1、什么是
指针
? 在C语言中,访问变量的方式有两种: 1、通过变量名访问(例如说去什么花店,以花店的名称找到对应的花店) 2、通过地址访问(通过花店的地址,导航过去) 地址是什么呢? 就是花店具体的路径xxxx路...
什么是函数
指针
?如何
使用
函数
指针
?
你可以将函数
指针
用来调用函数,就像你可以
使用
普通
指针
来访问变量一样。是函数返回值的类型。是函数
指针
的名称。是函数的参数类型。返回值类型:指定了函数
指针
所指向的函数的返回值类型。:指定了
指针
变量的名称和...
什么是野
指针
?如何避免野
指针
?
野
指针
不是 NULL
指针
,它是随即指向一块内存的
指针
。野
指针
是很危险的,会导致内存泄漏,if语句对它不起作用。 导致野
指针
的原因有两种: (1)野
指针
指向了一块没有访问权限的内存。(即
指针
没有初始化) (2...
Qt各种
指针
的
使用
总结
我们
使用
Qt框架开发软件时,可以用Qt封装的几种智能
指针
,这些
指针
将C++
指针
封装到一个对象里,
使用
方式与普通
指针
一样。这种将
指针
封装成对象的方式,避免了直接
使用
指针
可能导致的内存泄漏。本文总结了QPointer、...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章