社区
新手乐园
帖子详情
不理解,关于字符串与指针
HelloDan
2007-05-21 09:46:01
string str;
char *ch;
cin>>str;
ch=&str;
//另外;
int num;
cin>>num;
int array[num];
//上面那样做为什么不行啊?又要怎样才能实现那样的功能呢?
期待并感谢各样的回指导,帮助!
...全文
788
23
打赏
收藏
不理解,关于字符串与指针
string str; char *ch; cin>>str; ch=&str; //另外; int num; cin>>num; int array[num]; //上面那样做为什么不行啊?又要怎样才能实现那样的功能呢? 期待并感谢各样的回指导,帮助!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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语言难点分析整理.doc
16. C语言
字符串
函数大全 68 17. C语言宏定义技巧 89 18. C语言实现动态数组 100 19. C语言笔试-运算符和表达式 104 20. C语言编程准则之稳定篇 107 21. C语言编程常见问题分析 108 22. C语言编程易犯毛病集合 112 ...
指针
与
字符串
指针
与
字符串
一、
字符串
基础1、
字符串
声明2、
字符串
字面量池3、
字符串
初始化1、初始化字符数组2、初始化字符
指针
3、从其他输入初始化
字符串
4、
字符串
位置小结二、标准
字符串
操作1、比较
字符串
2、复制
字符串
3、拼接...
Python 47个
字符串
方法
# Python 47个
字符串
方法## 课程介绍同学们是否总是要搜资料、查官网后,才知道怎么操作
字符串
?如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、...
字符
指针
与
字符串
字符
指针
与
字符串
1、学习目标 字符
指针
与
字符串
-掌握 总结与思考 2、字符
指针
与
字符串
C语言通过使用字符数组来处理
字符串
通常我们把char数据类型的
指针
变量称为字符
指针
变量。(数据类型 * 变量名) 字符...
C语言:
字符串
数组与
字符串
指针
数组
1,首先,不论是局部,静态还是全局数组都必须在定义的时候初始化,否则就得通过其他方式,eg 循环操作,
字符串
处理...半天才发现应该用
字符串
指针
数组 3,那么问题来了,
字符串
数组和
字符串
指针
数组有什么区别 ...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章