C语言中定义数组时可以不定义长度吗,这样:uint8 array[]。看到一个函数的参数是这样定义的

如题所述

C语言中可以定义个数不确定的动态数组,但不是用uint8 array[];这样来定义的,这样会报错。定义个数不确定的动态数组必须先声明一个指针,然后用malloc为这个指针分配一段连续的空间,然后退出程序的时候要记得使用free释放这些变量空间,否则会造成内存泄露。
比如你要定义一个字符型的动态数组,可以先声明一个字符型指针:
char *CharNew;
然后在需要定义数组的时候,用下面语句开辟一定量的连续空间:
CharNew=(char*)malloc(10*sizeof(char));
这样你就可以像一般数组一样,用CharNew[1]来访问数组中的元素;
当退出程序时,你要使用:
free(CharNew);来释放数据空间。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-10
函数参数可以这样定义,表明该参数是一个数组的指针,至于数组有多少个元素可以不知道。
但是在程序段落中不可以这样定义,不知道有多少个元素,编译器就不知道到底要为这个数组分配多少内存,编译器会报错。追问

你的意思是作为函数参数时,会把它当作指针吗?

追答

是的,该参数的值为数组的首地址。

追问

哦 懂了 感谢,可否留下个Q,想请教一下关于STC单片机EEPRO的问题

追答

1031181901,不过我不搞单片机,不知道能不能帮到你。

本回答被网友采纳
第2个回答  2012-07-30
不能=。= 函数的参数是因为之定义他的形参而已,比如 int x啊的只是形式参数而已,只是告诉函数他的参数是什么类型额,以及如何在函数中调用
而你在正式使用的话一定要进行定义。
第3个回答  2012-07-30
不可以的
相似回答