社区
新手乐园
帖子详情
不理解,关于字符串与指针
HelloDan
2007-05-21 09:46:01
string str;
char *ch;
cin>>str;
ch=&str;
//另外;
int num;
cin>>num;
int array[num];
//上面那样做为什么不行啊?又要怎样才能实现那样的功能呢?
期待并感谢各样的回指导,帮助!
...全文
795
23
打赏
收藏
不理解,关于字符串与指针
string str; char *ch; cin>>str; ch=&str; //另外; int num; cin>>num; int array[num]; //上面那样做为什么不行啊?又要怎样才能实现那样的功能呢? 期待并感谢各样的回指导,帮助!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ooucj
2007-05-24
打赏
举报
回复
PASS
zjq520
2007-05-22
打赏
举报
回复
可以考虑用const来定义一个变量啊 然后在把你的num赋给const变量啊
HelloDan
2007-05-21
打赏
举报
回复
有要沉,这是最后的问题了。
HelloDan
2007-05-21
打赏
举报
回复
while(0!=*ch)
{
*pt=*ch-'0';
pt++;
}
----------------->
while(0!=*ch)
{
*pt=*ch-'0';
pt++;
ch++; //加这句
-----------------------------------
加上那句可以了。不过用:
while(0!=*pt)
cout<<*(pt++)<<" ";
这个输出有问题,输出多了,是因为什么呢。不过可以用其他方法控制,只是我不明白。可不可以再帮我解答下?
非常感谢lj860603(跑吧,键键) ,我学到了很多东西,也发现了自己很多错误。
Poville
2007-05-21
打赏
举报
回复
第二个问题:
int num;
cin>>num;
int array[num];
在编译阶段,编译器就要确定静态数组的大小好用来分配空间。
而你的做法使得num的值没法在编译阶段就确定,一定要等到运行阶段才能确定。
所以这个时候写 int array[num];是不行的。
要写成 int *p = new int[num],动态分配数组。
lj860603
2007-05-21
打赏
举报
回复
while(0!=*ch)
{
*pt=*ch-'0';
pt++;
}
----------------->
while(0!=*ch)
{
*pt=*ch-'0';
pt++;
ch++; //加这句
HelloDan
2007-05-21
打赏
举报
回复
不要沉啊。我对这方面学得不太好。
HelloDan
2007-05-21
打赏
举报
回复
int *p = new int[ num ];
int *pt;
pt=p;
ch=str.c_str(); //这里是指向一组数字组成的字符串。我想将这组字符串转成数字再输出。这样还是有错啊。请问是什么原因?
while(0!=*ch)
{
*pt=*ch-'0';
pt++;
}
cout<<"The digit is:"<<endl;
pt=p;
while(0!=*pt)
cout<<*(pt++)<<" ";
cout<<endl;
HelloDan
2007-05-21
打赏
举报
回复
那若我要这样有没有其他的实现方法啊?
=================
有,用new动态申请内存:
int num;
cin >> num;
int *p = new int[ num ];
----------------------------------------
谢谢你!这个方法是行的。
zycy
2007-05-21
打赏
举报
回复
ch=&str;------>ch=str.c_str();
int array[num];------>int* array=new int[num];
yuliyang
2007-05-21
打赏
举报
回复
我不太明白在char* ch这里 并没有为这个指针分配内存空间,为什么可以把一个未知长度的串赋值给他呢。
------------------------------------
这里只是让指针ch 指向一个地址而已,不是在指针ch所指地址的一段连续地址上填内容;
所以这里要区分清楚。
-------------------------------------
哦。。爱老虎油lj860603(跑吧,键键)
lj860603
2007-05-21
打赏
举报
回复
我不太明白在char* ch这里 并没有为这个指针分配内存空间,为什么可以把一个未知长度的串赋值给他呢。
------------------------------------
这里只是让指针ch 指向一个地址而已,不是在指针ch所指地址的一段连续地址上填内容;
所以这里要区分清楚。
yuliyang
2007-05-21
打赏
举报
回复
并且我把char* ch前面加上了 const才编译通过的:
#include <iostream>
#include <string>
using namespace std;
void main()
{
string str;
const char *ch;
cin>>str;
ch=str.c_str(); puts(ch);
}
lj860603
2007-05-21
打赏
举报
回复
那若我要这样有没有其他的实现方法啊?
=================
有,用new动态申请内存:
int num;
cin >> num;
int *p = new int[ num ];
yuliyang
2007-05-21
打赏
举报
回复
TO jixingzhong(瞌睡虫·星辰)
我不太明白在char* ch这里 并没有为这个指针分配内存空间,为什么可以把一个未知长度的串赋值给他呢。谢谢
HelloDan
2007-05-21
打赏
举报
回复
那若我要这样有没有其他的实现方法啊?
HelloDan
2007-05-21
打赏
举报
回复
>------ Build started: Project: ideaimple, Configuration: Debug Win32 ------
1>Compiling...
1>idea.cpp
1>g:\my documents\visual studio 2005\projects\ideaimple\ideaimple\idea.cpp(39) : error C2057: expected constant expression
1>g:\my documents\visual studio 2005\projects\ideaimple\ideaimple\idea.cpp(39) : error C2466: cannot allocate an array of constant size 0
1>g:\my documents\visual studio 2005\projects\ideaimple\ideaimple\idea.cpp(39) : error C2133: 'array' : unknown size
1>Build log was saved at "file://g:\My Documents\Visual Studio 2005\Projects\ideaimple\ideaimple\Debug\BuildLog.htm"
1>ideaimple - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
好像VC 2005不行啊。
lj860603
2007-05-21
打赏
举报
回复
//另外;
int num;
cin>>num;
int array[num];
----------------------
支持变长数组的编译器都没问题
lj860603
2007-05-21
打赏
举报
回复
//另外;
int num;
cin>>num;
int array[num];
----------------------
支持变长数组的编译器都没问题
HelloDan
2007-05-21
打赏
举报
回复
回jixingzhong(瞌睡虫·星辰):
你说的方法真的是可以,不过要定义:const char *ch;
那第二个问题又怎样解决啊?
加载更多回复(3)
C/C++
指针
经典资料大全
-
指针
越界:访问超出数组或
字符串
范围的
指针
可能导致错误。 7. **智能
指针
** - C++11引入了智能
指针
(如`unique_ptr`,`shared_ptr`,`weak_ptr`),自动管理内存,避免手动释放带来的问题。 8. **
指针
与STL** ...
指针
与
字符串
指针
与
字符串
一、
字符串
基础1、
字符串
声明2、
字符串
字面量池3、
字符串
初始化1、初始化字符数组2、初始化字符
指针
3、从其他输入初始化
字符串
4、
字符串
位置小结二、标准
字符串
操作1、比较
字符串
2、复制
字符串
3、拼接...
字符串
,字符
指针
,
字符串
指针
,字符数组
对于
指针
可能是大多数程序员最痛苦的事,尤其是
指针
和
字符串
和数组三者放在一起的时候,经历了几次错误后,我打算总结一下这几者的区别. ...
字符串
指针
:char *p; 首先声明他是
指针
,p指向一个字...
字符
指针
与
字符串
字符
指针
与
字符串
1、学习目标 字符
指针
与
字符串
-掌握 总结与思考 2、字符
指针
与
字符串
C语言通过使用字符数组来处理
字符串
通常我们把char数据类型的
指针
变量称为字符
指针
变量。(数据类型 * 变量名) 字符...
新手乐园
33,321
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章