C语言 技能提升 系列文章(二) 数组

C语言 技能提升 系列文章(二) 数组/* 3 行,5列 */。// 但如果是,int intArray = { 1 };// 下面的代码输出 : size of a = 12。

大家好,欢迎来到IT知识分享网。

今天,来跟大家聊一聊C语言中的数组。

C语言 技能提升 系列文章(二) 数组

数组的定义

数组是一种在内存中连续存储的数据集合,集合中的数据具有相同的类型。

这些数据通过他们共用的数组名加各自的索引值进行读取/存储。

数组的声明

语法 :typename array_name[array_size];

int intArray[ 10 ]; float floatArray[ 1000 ]; int tableArray[ 3 ][ 5 ]; /* 3 行,5列 */ const int NROWS = 100; float matrix[ NROWS ][ NCOLS ]; // C99 int numElements; printf( "How big an array do you want? " ); scanf( "%d", &numElements; ) if( numElements <= 0 ) { printf( "Error - Quitting\n" ); exit( 0 ); } double data[ numElements ]; // This only works in C99, not in plain C 

数组的初始化

typename array_name[array_size] = { init_data };

int intArray[ 6 ] = { 1, 2, 3, 4, 5, 6 }; float floatArray[ 100 ] = { 1.0f, 5.0f, 20.0f }; double piFractions[ ] = { 3., 1., 0. }; // 二维数组 int a[ 2 ][ 3 ] = { { 5, 6, 7 }, { 10, 20, 30 } }; // 三维数组 int b[ 2 ][ 3 ][4] = { { {5,6,7,8}, {6,7,8,9}, {7,8,9,10} }, { {8,9,10,11}, {9,10,11,12}, {10,11,12,13} } }; // C99 :支持对某一个特定的元素进行初始化 int numbers[ 100 ] = { 1, 2, 3, [10] = 10, 11, 12, [60] = 50, [42] = 420 }; // 这样子赋值,能够保证数组的所有元素都被赋值为0x00 int intArray[5] = { }; for(int i=0; i<5; i++) { printf("intArray[%d] = %d\n", i,intArray[i]); } Output: intArray[0] = 0 intArray[1] = 0 intArray[2] = 0 intArray[3] = 0 intArray[4] = 0 // 但如果是,int intArray[x] = { 1 }; 呢? // 编译器只会把第一个元素赋值为1 int intArray[5] = {1 }; for(int i=0; i<5; i++) { printf("intArray[%d] = %d\n", i,intArray[i]); } Output: intArray[0] = 1 intArray[1] = 0 intArray[2] = 0 intArray[3] = 0 intArray[4] = 0

数组的操作

数组在内存中连续存储这一特性,让数组名和指针之前的界限非常模糊。也正因为这一特点,决定了程序员能够对数组所进行的操作。

// 我们现便利输出我们的数组 int intArray[ 6 ] = { 1, 2, 3, 4, 5, 6 }; printf("intArray : "); for(int i=0; i<6; i++) { printf("%d ", intArray[i]); } printf("\n"); // 数组名在某些场合是可以当作指针来用的 // 下面的两次输出内容是一样的 printf("IntArray[3] = %d\n", *(intArray+3)); int *pIntArray = intArray; printf("pIntArray[3] = %d\n", *(pIntArray+3)); // 计算数组的内存大小 // 下面的代码会输出24,因为int型占4个字节,整个数组占24个字节 printf("sizeof intArray = %lu\n", sizeof intArray); // 而我们如果用同样的方法打印一个指向这个数组的指针呢? // 结果取决于当前机器的字长,64位机器结果是8,32位机器结果是4 // 记住,这就是数组名和指针的区别。 printf("sizeof pIntArray = %lu\n", sizeof pIntArray); // 计算数组有多少个元素 // 计算结果就是6 printf(" intArray count = %lu\n", sizeof(intArray)/sizeof(int)); // 二维数组 // 上面的例子说明了,intArray+3 等于 intArray[3] // 那么对于二维数组呢? 下面的 a + 2 等于什么? // 我是这样理解的,a是一个二维数组,它同时也是一个一位数组 // 这个一维数组的成员是另外两个一维数组 int a[ 2 ][ 3 ] = { { 5, 6, 7 }, { 10, 20, 30 } }; // 下面的代码输出 : size of a[1] = 12 // 正好是一个有三个元素的一维数组的大小 printf("size of a[1] = %d \n", sizeof (a[1])); 

以上,就是今天要和大家分享的内容。希望对大家有所帮助。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/46702.html

(0)
上一篇 2024-10-04 21:00
下一篇 2024-10-05 15:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信