当前位置:  开发笔记 > 运维 > 正文

for-objective-c - 原始数组中的循环

如何解决《for-objective-c-原始数组中的循环》经验,为你挑选了2个好方法。

对于静态创建的数组类型,您可以使用sizeof运算符,例如

sizeof(myArray) / sizeof(myArray[0])

对于动态创建的数组(即通过指针引用),这将不起作用(sizeof将只为您提供系统上指针的大小).在这种情况下,您需要常量或数组中的sentinal值.使用sentinal,只扫描每个轴,直到找到它的长度(这是C字符串的工作方式,使用\ 0).



1> Adam Wright..:

对于静态创建的数组类型,您可以使用sizeof运算符,例如

sizeof(myArray) / sizeof(myArray[0])

对于动态创建的数组(即通过指针引用),这将不起作用(sizeof将只为您提供系统上指针的大小).在这种情况下,您需要常量或数组中的sentinal值.使用sentinal,只扫描每个轴,直到找到它的长度(这是C字符串的工作方式,使用\ 0).



2> sfossen..:

在C我会做以下,尝试:

sizeof( matrix ) /sizeof( matrix[0] )         <- outer array
sizeof( matrix[0] )/ sizeof( matrix[0][0] )   <- inner array



linux ~ $ cat sizeof_test.c
#include 

int main( void )
{
        int matrix[][3] = { {1,2,3}, {1,2,3}, {1,2,3}, };
        int matrix2[][3] = { {1,2,3}, {1,2,3}, {1,2,3}, {1,2,3}, };
        int matrix3[][4] = { {1,2,3,4}, {1,2,3,4}, {1,2,3,4}, {1,2,3,4}, };

        printf( "array (%d) - elements( %d )\n", sizeof( matrix ) /sizeof( matrix[0] ), sizeof( matrix[0] )/ sizeof( matrix[0][0] ));
        printf( "array (%d) - elements( %d )\n", sizeof( matrix2 ) /sizeof( matrix2[0] ), sizeof( matrix2[0] )/ sizeof( matrix2[0][0] ));
        printf( "array (%d) - elements( %d )\n", sizeof( matrix3 ) /sizeof( matrix3[0] ), sizeof( matrix3[0] )/ sizeof( matrix3[0][0] ));

        return 0;
}
linux ~ $ gcc sizeof_test.c -o sizeof_test
linux ~ $ ./sizeof_test
array (3) - elements( 3 )
array (4) - elements( 3 )
array (4) - elements( 4 )
linux ~ $

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有