C++中用动态分配内存来改变数组长度

2024-12-01 09:41:29
推荐回答(2个)
回答(1):

C++嘛 当然要用new 和delete了直接给你代码吧 按你要求写了个 #include
using namespace std;void display( int *tmp, int size );//显示
void sort( int *tmp,int size );//排序int main()
{
int n;
cout << "输入一个整数:";
cin >> n;
int * test = new int[n];
for ( int i = 0; i < n; i++ )
{
cout << "输入第" << i+1 << "个数:";
cin >> test[i];
} cout << "输出排序前的数组:" << endl;
display( test,n);
sort( test,n );
cout << "输出排序后的数组:" << endl;
display( test,n); delete [] test;
return 0;
}void display( int *tmp, int size )
{
for ( int i = 0; i < size; i++ )
{
cout << tmp[i] << ",";
}
cout << endl;
}void sort( int *tmp, int size )
{
for ( int i = 0; i < size; i++ )
for ( int j = 0; j < size-i-1; j++)
{
if ( tmp[j] > tmp[j+1])
{
int t = tmp[j];
tmp[j] = tmp[j+1];
tmp[j+1] = t;
}
}
}

回答(2):

假设你的数据时int型的。

int *p = null;
int n;
scanf("%d",&n);
p = malloc(n, sizeof(int)); // 这样分配了N个int型数据的空间,并且p指向空间首地址

排序那个就自己采用一种排序方法吧。操作p可以说是跟操作一个数组一样的
p[0]就是第一个元素。p[n-1]就是数组最后一个元素。。

最后调用free(p)释放掉申请的内存