C语言中数组大小不确定可否用指针来解决?该如何处理
C语言中数组大小不确定可否用指针来解决?
最近一直纠结于matlab代码C化,其中matlab的向量可以任意长度但是C的数组大小必须事先声明最让我想不开...
但是最近发现,如果我声明一个指针,然后把它按数组的格式赋值和计算,是不是就可以实现数组的无限长了?
举个小程序的例子
#include<stdio.h>
void main()
{
double *x;
x[0]=1;
x[1]=2;
printf("x[0] is: %f\nx[1] is: %f",x[0],x[1]);
}
我用turboC运行了,是可以运行的...(实在不好意思说我还用的turboC...)
但是我写的程序里大概声明了10个左右的这样的指针,然后当成数组形式赋值运算之类的,程序就运行不了了...弹出一个什么提示illegal termination之类的窗口...但是可以compile
我想问我这样的想法,就是声明指针变量但是把其当做数组来运算以避免声明数组大小可以实现吗?错误在哪里?
如果不能实现,有什么其他办法能实现避免声明数组大小吗?
还有关于malloc,传入函数的int值可以作为数组的大小来声明吗?比如:
void test(int n)
{
array[i]=(int *)malloc(n*sizeof(n));
}
可以吗?
谢谢谢谢~最近被matlab和C双重折磨呀...如果有关于mex-file的问题也欢迎相互讨论O(∩_∩)O~
大大的感谢
------解决方案--------------------
最近一直纠结于matlab代码C化,其中matlab的向量可以任意长度但是C的数组大小必须事先声明最让我想不开...
但是最近发现,如果我声明一个指针,然后把它按数组的格式赋值和计算,是不是就可以实现数组的无限长了?
举个小程序的例子
#include<stdio.h>
void main()
{
double *x;
x[0]=1;
x[1]=2;
printf("x[0] is: %f\nx[1] is: %f",x[0],x[1]);
}
我用turboC运行了,是可以运行的...(实在不好意思说我还用的turboC...)
但是我写的程序里大概声明了10个左右的这样的指针,然后当成数组形式赋值运算之类的,程序就运行不了了...弹出一个什么提示illegal termination之类的窗口...但是可以compile
我想问我这样的想法,就是声明指针变量但是把其当做数组来运算以避免声明数组大小可以实现吗?错误在哪里?
如果不能实现,有什么其他办法能实现避免声明数组大小吗?
还有关于malloc,传入函数的int值可以作为数组的大小来声明吗?比如:
void test(int n)
{
array[i]=(int *)malloc(n*sizeof(n));
}
可以吗?
谢谢谢谢~最近被matlab和C双重折磨呀...如果有关于mex-file的问题也欢迎相互讨论O(∩_∩)O~
大大的感谢
------解决方案--------------------
- C/C++ code
#include<stdio.h> void main() { double *x; x[0]=1; x[1]=2; printf("x[0] is: %f\nx[1] is: %f",x[0],x[1]); }
------解决方案--------------------
通过指针可以完成数组的功能,比价麻烦的是资源的申请和释放,这个需要特别的注意。
------解决方案--------------------
------解决方案--------------------