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

几个字符串按大小输出 为什么内存出错啊

honghong88 发布于 2011-11-14 19:58, 605 次点击
#include<iostream>
using namespace std;
int main()
{void sort(char *name[],int n );
void print (char *name[],int n );
char * name[30];

int i;

char **p;
p=name;

for(i=0;i<5;i++)
{cout<<"input"<<i+1;
cin>>*(p+i);
}
sort(name,5);
print(name,5);

}

void sort(char *name[],int n     )
{char *temp;
int i ,j,k;
for(i=0;i<n-1;i++ )
{k=i;
for(j=1;j<n;j++)
 if( strcmp(name[k],name[j])>0   )
 k=j;
if(k!=j)

{temp=name[i];name[i]=name[k];name[k]=temp;
}
}
}

void print( char *name[],int n)
{int i;
for(i=0;i<n;i++)
cout<<name[i]<<endl;
}
2 回复
#2
hellovfp2011-11-16 11:58
没有给指针数组成员分配空间,就会内存出错。
#3
心灵百合2011-11-17 19:53
cout<<"input"<<i+1;
cin>>*(p+i);
这里输入name的时候出错了。一个地址只能存放一个字符,5个地址怎么存放那么多字符!定义一个结构体
strucr name{char name[30]}
1