我是以前的C#程序员,关于C语言,有些事情我无法理解(特别是,我使用C99标准进行编码)
我被告知无法用C知道数组的长度,我需要将其长度作为参数发送给我愿意使用的函数,但是为什么呢?例如,在C#中,我们可以键入array_name.lenght
加上二维数组,为什么必须指定数组的列数?我是说为什么要这样做:
void test1 (int arr[][m])
{
}
虽然不是这样:
void test2 (int arr[][])
{
}
例如,在C#中,我们可以键入
array_name.length
在大多数编程语言中,数据类型为抽象
在C中,将作为参数传递给函数的数组转换为指向数组第一个元素的指针。数组的大小不会隐式传递给函数。您,程序员,有责任将正确的数组大小传递给您的函数。
C是一种过程语言(比大多数过程语言更接近汇编语言),而不是面向对象的语言。 IOW,Algol(和C)早于Smalltalk(和C#),Smalltalk教给我们一些重要的课程。