注册 登录
编程论坛 C++教室

指针数组为何输入不了字符串;

九天冥盟 发布于 2017-11-23 18:53, 2142 次点击
#include <iostream>
using namespace std;

int main()
{
  char *a[3];
  int i;
  for(i=0; i<3; i++)
    cin>>a[i];
  for(i=0 ; i<3; i++)
    cout<<a[i]<<endl;
return 0;
}

当输完第一个字符串时,就会弹出一个“该程序已停止工作。。。”
这是什么原因啊? 注:编译器:DEV-c++ 5.11
9 回复
#2
wengbin2017-11-23 21:04
申请了一个指针数组,你并没有给每个指针分配内存呀,输入的东西要往哪放呢?挂掉是很正常的
#3
rjsp2017-11-24 08:23
char *a[3] 改为 char a[3][单个字符串可能需要的最长字节数],比如 char a[3][200];
当然,因为用户实际输入的最长字节数很难确定,所以一般用std::string,即 std::string a[3];
#4
九天冥盟2017-11-24 08:32
回复 2楼 wengbin
但是为什么c语言中声明一个指针数组却可以正确输入和运行!
#5
九天冥盟2017-11-24 08:44
回复 3楼 rjsp
就是说声明了string 类的一个数组; 之所以不用二维数组而使用指针数组,就是因为二维数组太消耗内存;  
#6
十三陵2017-11-24 22:57
用string库下的string好了dev支持c11的,STL的库不用真的对不起c11
#7
wengbin2017-11-29 19:36
麻烦把c语言里能运行的代码分享下吧,看看什么样的,正常来说如果和你在这里贴的代码一样,肯定是不可以的
#8
新人学习2017-12-12 22:26
你这样的定义 只能初始化 字符串
#9
Heisberg2017-12-18 12:41
#include <cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
    char *a=(char *)malloc (3*sizeof(char));
    int i;
    for(int i=0;i<3;i++)
        cin>>*(a+i);
    for(int i=0;i<3;i++)
        cout<<*(a+i)<<endl;
}
#10
新人学习2017-12-18 20:44
你定义了三个指针变量
但是没有给这个三个指针变量寻求一块内存区域
用new分配内存.
1