社区
新手乐园
帖子详情
不理解,关于字符串与指针
HelloDan
2007-05-21 09:46:01
string str;
char *ch;
cin>>str;
ch=&str;
//另外;
int num;
cin>>num;
int array[num];
//上面那样做为什么不行啊?又要怎样才能实现那样的功能呢?
期待并感谢各样的回指导,帮助!
...全文
802
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/C++
指针
经典资料大全
C/C++
指针
经典资料大全,十余部经典资料书籍,是您精通C
指针
的理想教程。
指针
与
字符串
指针
与
字符串
一、
字符串
基础1、
字符串
声明2、
字符串
字面量池3、
字符串
初始化1、初始化字符数组2、初始化字符
指针
3、从其他输入初始化
字符串
4、
字符串
位置小结二、标准
字符串
操作1、比较
字符串
2、复制
字符串
3、拼接
字符串
三、传递
字符串
1、传递简单
字符串
2、传递字符常量的
指针
3、传递需要初始化的
字符串
4、给应用程序传递参数四、返回
字符串
1、返回字面量的地址2、返回动态分配内存的地址 导读:
字符串
可以分配在内存的不同区域,通常使用
指针
来支持
字符串
操作。
指针
支持动态分配
字符串
和将
字符串
作为参数传递给函数。 了解声明和
字符串
,字符
指针
,
字符串
指针
,字符数组
对于
指针
可能是大多数程序员最痛苦的事,尤其是
指针
和
字符串
和数组三者放在一起的时候,经历了几次错误后,我打算总结一下这几者的区别.
字符串
:"asdasfsff",c语言中后面有'\0'. 字符数组:A[7] = |'a'|'b'|'c'|'d'|'e'|'f'|'\0'|,每一个元素是一个字符 字符
指针
:char *p; p指向单个字符
字符串
指针
:char *p; 首先声明他是
指针
,p指向一个字...
字符
指针
与
字符串
字符
指针
与
字符串
1、学习目标 字符
指针
与
字符串
-掌握 总结与思考 2、字符
指针
与
字符串
C语言通过使用字符数组来处理
字符串
通常我们把char数据类型的
指针
变量称为字符
指针
变量。(数据类型 * 变量名) 字符
指针
变量与字符数组有着密切关系,它也被用来处理
字符串
。 初始化字符
指针
是把内存中
字符串
的首地址赋予
指针
,并不是把该
字符串
复制到
指针
中。 char str[] = “Hello World”;//字符数组中
字符串
内容是可变的 char * p = str; 示例验证:
新手乐园
33,319
社区成员
41,771
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章