问一个c++小程序

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:25:44
今天刚学完指针,对指针数组的用法还是有些迷惑。
题目:用一个指针数组存储6种语言“FORTRAN”,“PASCAL”,“BASIC”,“C”,“COBAL”,“Smalltalk”,采用冒泡排序进行递增排序。
在下编的程序如下:
#include<iostream.h>
#include<string.h>
#include<stdio.h>
void main()
{
char *lang[6];
char *ch;
ch=new char[20];
int i,j;
lang[0]=new char[10];
lang[0]="FORTRAN";
lang[1]=new char[10];
lang[1]="PASCAL";
lang[2]=new char[10];
lang[2]="BASIC";
lang[3]=new char[10];
lang[3]="C";
lang[4]=new char[10];
lang[4]="COBOL";
lang[5]=new char[10];
lang[5]="Smalltalk";
for(i=0;i<=4;i++)
{
for(j=0;j<=5-i;j++)
{
if(strcmp(lang[j],lang[j+1])>0)
{
ch=lang[j];
lang[j]=lang[j+1];
lang[j+1]=ch;
}
}
}
for(i=0;i<=5;i++)
puts(lang[i]);
delete [] * lang;

lang[0]=new char[10];
lang[0]="FORTRAN";
lang[1]=new char[10];
lang[1]="PASCAL";
lang[2]=new char[10];
lang[2]="BASIC";
lang[3]=new char[10];
lang[3]="C";
lang[4]=new char[10];
lang[4]="COBOL";
lang[5]=new char[10];
lang[5]="Smalltalk";

这些都不需要new。

for(i=0;i<=5;i++)
puts(lang[i]);
delete [] * lang;
lang指向的是存储在静态区的"FORTRAN"等字符串,你delete当然会报错了。

格式错误,再修改一下就行了

学习,学习。。 恩。。嗯。。

释放空间的问题 我学的也不是很好 不过你从头到尾也没有体现处动态性

NEW没什么意义

你定义的是指针数组 因为是新手 所以我比较喜欢把指针和数组明显的区分开

我一般用二级指针来动态分配二维数组

我试了很多方式来释放空间 都不理想 如果你调试好了 我也想知道是什么原因 还有 你的CH没释放