可变数组怎么初始化(可变大小的对象不能被初始化)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可变数组怎么初始化(可变大小的对象不能被初始化)?相关的知识,希望对你有一定的参考价值。

#include <stdio.h>

int main(void)

char a=256;
int d = a ;
int m=1, num[m];
int sum[m] = 1;
printf("%d,%d",d, d+1);

return 0;


编译时提示:
5.c: 在函数‘main’中:
5.c:5:2: 警告: 隐式常量转换溢出 [-Woverflow]
5.c:8:2: 错误: 可变大小的对象不能被初始化
5.c:8:2: 警告: 数组初始值设定项中有多余的元素 [默认启用]
5.c:8:2: 警告: (在‘sum’的初始化附近) [默认启用]
make: *** [5] 错误 1

可变数组的声明要使用STL 其类型是vector
下面给个例子 希望你运行下:
#include <iostream>
#include <vector>
using namespace std;

int main()

vector<int> iVec;
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //1个元素, 容器容量为1

iVec.push_back(1);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //2个元素, 容器容量为2

iVec.push_back(2);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //3个元素, 容器容量为4

iVec.push_back(3);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //4个元素, 容器容量为4

iVec.push_back(4);
iVec.push_back(5);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //5个元素, 容器容量为8

iVec.push_back(6);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //6个元素, 容器容量为8

iVec.push_back(7);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //7个元素, 容器容量为8

iVec.push_back(8);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //8个元素, 容器容量为8

iVec.push_back(9);
cout << "容器 大小为: " << iVec.size() << endl;
cout << "容器 容量为: " << iVec.capacity() << endl; //9个元素, 容器容量为16
/* vs2005/8 容量增长不是翻倍的,如
9个元素 容量9
10个元素 容量13 */

/* 测试effective stl中的特殊的交换 swap() */
cout << "当前vector 的大小为: " << iVec.size() << endl;
cout << "当前vector 的容量为: " << iVec.capacity() << endl;
vector<int>(iVec).swap(iVec);

cout << "临时的vector<int>对象 的大小为: " << (vector<int>(iVec)).size() << endl;
cout << "临时的vector<int>对象 的容量为: " << (vector<int>(iVec)).capacity() << endl;
cout << "交换后,当前vector 的大小为: " << iVec.size() << endl;
cout << "交换后,当前vector 的容量为: " << iVec.capacity() << endl;

return 0;
参考技术A #include <stdio.h>
#define M 50
#define N 50
int a[M][N];
void again(int a[][50]);
int main()

int a_rows,a_cols;
int i,j;
again(a);
printf("please input the i_rows of the array_a:");
scanf("%d",&a_rows);
printf("please input the i_cols of the array_a:");
scanf("%d",&a_cols);
printf("input the array_a:\n");
for(i=0;i<a_rows;i++)
for(j=0;j<a_cols;j++)

scanf("%d",&a[i][j]);

for(i=0;i<a_rows;i++)
for(j=0;j<a_cols;j++)
printf("%d",a[i][j])
return 0;

void again(int a[]【50】)


int i,j;
for(i=0;i<50;i++)
for(j=0;j<50;j++)
a[i][j]=0;
return;

这是二维的 子函数部分就是初始化 希望对你有用~
参考技术B 可变数组 不初始化; 就跟要你去找一个人 但是没跟你说有什么特征一样 你怎么找

以上是关于可变数组怎么初始化(可变大小的对象不能被初始化)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 类中初始化可变大小数组?

使用 memset 防止“可变大小的对象可能未初始化”

NSArray 大小和可变性

Java中的可变长度(动态)数组

为啥 C++ 可以“填充”初始化一个可变大小的数组?

Objective - C NSArray不可变数组和NSMutableArray可变数组