怎样定义一个不定大小的数组? 谢谢. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 安全数组可以完成任务SAFEARRAY void assign(int n);void main(){ int num; cin>>num; assign(num);}void assign(int n){ int **p;int i;int j; p= (int**)malloc((n)*sizeof(int*));//2维,n维照例 for(i=0;i<n;i++) { p[i]= (int*)malloc(n*sizeof(int));/////含n个数的数组 for(j=0;j<n;j++) cin>>p[i][j];////////////////////////输入数组元素 } for(i=0;i<n;i++) for(j=0;j<n;j++) cout<<p[i][j];} for(i=0;i<n+1;i++) for(j=0;j<n;j++) cout<<p[i][j];} http://expert.csdn.net/Expert/topic/1710/1710206.xml?temp=.1353418 多谢诸位,我是说定义一个数组例如float s[],里面不知有多少个数,我要从一个文本文档里读数,读多少是多少,说一不能用new或malloc这些动态分配内存,前面有网友说用指针,我想问问到底应该怎么设置,谢谢. char * str;str = new char [100]; // 自己定义大小 .....delete [] str; // 释放 你可以使用指针来实现,这样来做:如果是一维的,int *arr; //可以是其它类型 (char, float...)arr = new int[n]; //n 必须是整型变量二维的呢,这样来,int **arr;int N,M;cin >> N >> M;arr = new int*[N];for(int i=0;i<N;i++) { arr[i] = new int[M]; } 上面的代码就可以通过动态输入N,M来实现二维数组的定义 CArray <float, float> s; 用new不行啊,我不知道double *a; a=new double[n];后面这个n是多少,我得读完文件才知道,前面那威望友说先获取文件大小,该怎么做啊. GetFileSize,具体的与文件格式有关。提醒:分配时,一定要判断操作是否成功。 不用时,及时释放堆内存_ delete []a; 不能用new或malloc这些动态分配内存,则无法实现,因为你是根本不知道要多大的数组,只有等读完文件才知道,那你肯定得需要不断得realloc了,就算你读完文件,得到需要几个,再来分配空间,然后重新读,恐怕也得用malloc呀。float *s = NULL;int num = 0; ...while ( !feof( fp ) ){ fread( ... ); ... if ( num == 0 ) s = (float *)calloc( 1, sizeof( float ) ); else s = realloc( num + 1, sizeof( float ) ); if ( s == NULL ) ... num ++; ...} 可以用CArray,可以自己定义要放入的对象的。如果要存放从文件中读出的信息,用CStringArray就得以了,比较好用的,而且有很多现成的方法!!! 如何让程序启动后运行在扩展屏幕上? 再次求助,十万火急,在基于CFormView的多文档界面中,如何将菜单与一个对话框关联? 再出100分! 请教高手!关于代理自动配置脚本(.PAC)文件的读取问题。 请教内存泄漏问题,大侠指点! WM_CREATE时如何得到窗口的大小?? 关于ASSERT()宏 mdi需要再加一个文档/视图。具体方法是怎么样的? 我想学习汇编,请问需要什么基础? VC6怎样通过xsd检查XML正确性 关于LoadLibrary("kernel32")的问题 关于画图 请教一个关于线程的问题
void main()
{
int num;
cin>>num;
assign(num);
}
void assign(int n)
{
int **p;int i;int j;
p= (int**)malloc((n)*sizeof(int*));//2维,n维照例
for(i=0;i<n;i++)
{
p[i]= (int*)malloc(n*sizeof(int));/////含n个数的数组
for(j=0;j<n;j++)
cin>>p[i][j];////////////////////////输入数组元素
} for(i=0;i<n;i++)
for(j=0;j<n;j++)
cout<<p[i][j];
}
for(i=0;i<n+1;i++)
for(j=0;j<n;j++)
cout<<p[i][j];
}
int *arr; //可以是其它类型 (char, float...)
arr = new int[n]; //n 必须是整型变量二维的呢,这样来,int **arr;
int N,M;
cin >> N >> M;arr = new int*[N];
for(int i=0;i<N;i++) { arr[i] = new int[M]; } 上面的代码就可以通过动态输入N,M来实现二维数组的定义
后面这个n是多少,我得读完文件才知道,前面那威望友说先获取文件大小,该怎么做啊.
具体的与文件格式有关。
提醒:分配时,一定要判断操作是否成功。
不用时,及时释放堆内存_ delete []a;
float *s = NULL;
int num = 0;
...
while ( !feof( fp ) )
{
fread( ... );
...
if ( num == 0 )
s = (float *)calloc( 1, sizeof( float ) );
else
s = realloc( num + 1, sizeof( float ) );
if ( s == NULL )
... num ++;
...
}
如果要存放从文件中读出的信息,用CStringArray就得以了,比较好用的,而且有很多现成的方法!!!