如何知道数组长度并将其放入C中的整数变量中?
如何知道数组长度并将其放入C中的整数变量中如何知道数组长度并将其放入C中的整数变量中?,c,C,如何知道数组长度并将其放入C中的整数变量中 int array []={1,2,3,4,5}; int arrayLength = ???????? ; int i; for (i = 0; i < arrayLength ;i++){ printf("the i is :%i \n", i ); } int数组[]={1,2,3,4,5}; int arrayLength=; int i; 对于(i=0;i
int array []={1,2,3,4,5};
int arrayLength = ???????? ;
int i;
for (i = 0; i < arrayLength ;i++){
printf("the i is :%i \n", i );
}
int数组[]={1,2,3,4,5};
int arrayLength=;
int i;
对于(i=0;i
我会使用:
const size_t arrayLength = sizeof array / sizeof *array;
第一个sizeof array
是所有array
的大小(以字节为单位),第二个是第一个元素的大小,当除以该值时,即为元素数
大小可以保持为size\u t
,当然它是const
,因为它不会改变
请注意,如果将数组传递到函数中,此代码将不起作用,因为在这种情况下数组会衰减为指针,因此需要一个单独的参数来表示大小。我将使用:
const size_t arrayLength = sizeof array / sizeof *array;
第一个sizeof array
是所有array
的大小(以字节为单位),第二个是第一个元素的大小,当除以该值时,即为元素数
大小可以保持为size\u t
,当然它是const
,因为它不会改变
请注意,如果将数组传递到函数中,此代码将不起作用,因为在这种情况下,数组会衰减为指针,因此需要一个单独的大小参数。数组大小是常量。而且必须在编译时知道它。所以您知道它,并且可以在程序中使用它。数组大小是恒定的。而且必须在编译时知道它。所以您知道它,并且可以在程序中使用它。可变长度数组,因为C99,允许在运行时确定大小的数组。@chux在VS中执行此操作时,我总是遇到编译错误。这就是我这么说的原因。您使用的VS版本可能不符合C99或C11的C标准。也许可以使用更兼容/最新的编译器?不,例如,如果用户输入他的名字,您想读取他的名字。这个例子我不知道数组长度。考虑到这个错误,VS2017仍然不符合C99。它实际上可能符合C11;在那里,VLA是可选的。但是,如果它声称符合C11,编译器应通过定义
\define\uu STDC\u NO\u VLA\uuu1
来记录VLA的缺失,以允许您的代码检测到编译器不支持VLA。它也可能只是不支持它们,并且不需要进一步的ado就符合C90。但是如果MS只支持四分之一世纪前的标准。可变长度数组,从C99开始,允许在运行时确定大小的数组。@chux在VS中执行此操作时,我总是遇到编译错误。这就是我这么说的原因。您使用的VS版本可能不符合C99或C11的C标准。也许可以使用更兼容/最新的编译器?不,例如,如果用户输入他的名字,您想读取他的名字。这个例子我不知道数组长度。考虑到这个错误,VS2017仍然不符合C99。它实际上可能符合C11;在那里,VLA是可选的。但是,如果它声称符合C11,编译器应通过定义\define\uu STDC\u NO\u VLA\uuu1
来记录VLA的缺失,以允许您的代码检测到编译器不支持VLA。它也可能只是不支持它们,并且不需要进一步的ado就符合C90。但如果微软只支持四分之一世纪的标准,那就有点令人沮丧了。