C03_C语言-数组

来源:互联网 发布:易企秀 java 面试 编辑:程序博客网 时间:2024/05/29 07:20

1.声明和初始化

/*不建议的声明及创建方法*/int lt = 3;int nums[lt];nums[0] = 98;nums[1] = 43;printf("%d, %d\n", sizeof(nums)/sizeof(int), nums[2]);//尽管声明及创建都未报错,但未初始化的位置的值不是理想值//int numss[lt] = {4, 3, 5};//错误的声明及创建,指定长度只能用常量/* 声明并初始化数组 - 1 */int nums1[3];nums1[0] = 34;nums1[1] = 46;nums1[2] = 97;printf("nums1长度:%d\n", sizeof(nums1)/sizeof(int));/* 声明并初始化数组 - 2 */int nums2[3] = {34, 46, 97};printf("nums2长度:%d\n", sizeof(nums2)/sizeof(int));/* 声明并初始化数组 - 3 */ //如果这里没有初始化,是错误的int nums3[] = {34, 46, 97, 44};//长度为初始化的元素个数printf("nums3长度:%d\n", sizeof(nums3)/sizeof(int));/* 声明并初始化数组 - 4 */int nums4[3] = {[2] = 97};//未指定的默认初始化为0printf("nums4长度:%d\n", sizeof(nums4)/sizeof(int));/* 声明并初始化数组 - 5 */int nums5[] = {[2] = 97};//未指定的默认初始化为0printf("nums5长度:%d\n", sizeof(nums5)/sizeof(int));

2.数组作为函数参数

//参数类型为整型数值void intChange(int arg){arg = 9090;}int main() {int array[] = {3,4,4,5};arrChange(array);//实参,数组名代表地址printf("%d \n", array[1]);//99intChange(array[1]);//形参,不影响原始数据printf("%d \n", array[1]);//99}

3.排序和倒序

//这里的实参arr实际是指针,长度固定为8,不能通过它获取数组长度void show(int arr[], int length){int i;for(i=0; i<length; i++){printf("%d\t", arr[i]);}printf("\n");}int main() {int array[] = {3,8,4,5};int i, j, temp=array[0];for(i=1; i< sizeof(array)/sizeof(int); i++){if(array[i]>temp){temp = array[i];}}printf("最大值:%d\n", temp);//排列//外围:控制操作值的个数for(i=0; i< sizeof(array)/sizeof(int)-1; i++){//内部:排除操作结束的值for(j=0; i< sizeof(array)/sizeof(int)-1-j; j++){//换位条件if(array[j] < array[j+1]){temp = array[j];array[j] = array[j+1];array[j+1]= temp;}}}show(array, sizeof(array)/sizeof(int));//倒序//外围:控制操作值的个数for(i=0; i< sizeof(array)/sizeof(int)-1; i++){//内部:排除操作结束的值for(j=0; i< sizeof(array)/sizeof(int)-1-j; j++){temp = array[j];array[j] = array[j+1];array[j+1]= temp;}}show(array, sizeof(array)/sizeof(int));}

4.二维数组

//根数组可以不指定,子数组必须指定int arr[][5] = {{3,  8,  4,  5},//初始化如同一维数组{13, 22, 45, 5},{43, 3,  21, [4] = 56},{[1] = 38, 4,  9,  7}};printf("%d\n", arr[2][4]);//56printf("%d\n", arr[3][4]);//7

- end

0 0