01-数组
#includeint main(){ // 使用注意 // 都是正确写法 //int ages[5] = {10 , 11, 12, 67, 56}; //int ages[5] = {10, 11}; //int ages[5] = {[3] = 10, [4] = 11}; //int ages[] = {10, 11, 14}; // 错误写法 // int ages[]; // 错误写法 /* 只能在定义数组的同时进行初始化 int ages[5]; ages = {10, 11, 12, 14}; //因为数组名存储的是一个指针 */ // 正确写法 // int ages['A'-50] = {10, 11, 12, 14, 16}; // 65-50 --》15 //int size = sizeof(ages); 15*4-----》60 //printf("%d\n", size); // 正确写法 /* int count = 5; int ages[count]; ages[0] = 10; ages[1] = 11; ages[2] = 18; */ //printf(); // 错误写法 // 如果想再定义数组的同时进行初始化,数组元素个数必须是常量,或者不写 //int ages[count] = {10, 11, 12}; int ages[] = { 10, 11, 12, 78}; // 计算数组元素的个数 int count = sizeof(ages)/sizeof(int); for (int i = 0; i
数组元素在内存中的存放顺序与变量不同 第[0]个元素是放到低位的,依次往高位
在调用函数时传入参数是数组的时候,实际是将数组的地址传过去,是地址传递(非值传递),所以在函数中改变数据元素值的时候,数组元素的值是会改变的.
#include// 数组作为函数参数,可以省略元素个数// 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组void change(int array[]){ //printf("array==%p\n", array); array[0] = 100;}void change2(int n){ n = 100;}int main(){ int ages[6] = { 10, 11, 10, 11, 10, 11}; //printf("ages==%p\n", ages); change(ages); //change2(ages[0]); printf("%d\n", ages[0]); return 0;}
数组与函数的练习
#includeint maxOfArray(int array[], int length){ // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节 //int size = sizeof(array); //printf("array=%d\n", size); //sizeof(array); // 1.定义一个变量存储最大值(默认就是首元素) int max = array[0]; // 2.遍历所有元素,找出最大值 for (int i = 1; i max) { max = array[i]; } } return max;}int main(){ int ages[] = { 11, 90, 67, 150, 78, 60, 70, 89, 100}; int ages2[] = { 11, 90, 67, 150, 78, 60, 70, 89, 100}; //int size = sizeof(ages); //printf("ages=%d\n", size); int max = maxOfArray(ages, sizeof(ages)/sizeof(int)); printf("%d\n", max); return 0;}
二维数组
int main(){ /* int ages[5] = {10, 11, 90, 89, 70}; int ages2[3][5]= { {10, 11, 90, 89, 70}, {10, 11, 90, 89, 70}, {10, 11, 90, 89, 70} };*/ char cs[2][3]; /* 1 浅蓝色 2 深蓝色 3 黄色 4 红色 -1 没有 */ int cubes[5][5] = { { 1, -1, -1, -1, -1}, //俄罗斯方块 { 1, 1, -1, 2, -1}, { 4, 1, 2, 2, 2}, { 4, 3, 3, 3, 3}, { 4, 3, 3, 3, 3} }; /* 1 白色 2 黑色 -1 没有 */ int wuzi[6][6] = { //五子棋 {}; }; return 0;}