C语言


01-数组

#include <stdio.h>

int 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<count; i++)
{
printf(
"ages[%d]=%d\n", i, ages[i]);
}

return 0;
}

// 数组的基本使用
void arrayUse()
{
// 数组的定义格式: 类型 数组名[元素个数];
int ages[5] = {19, 29, 28, 27, 26};
// 19 19 28 27 26]
ages[1] = 29;

/*
ages[0] = 19;
ages[1] = 19;
ages[2] = 28;
ages[3] = 27;
ages[4] = 26;
*/

/*
遍历:按顺序查看数组的每一个元素
*/
for (int i = 0; i<5; i++)
{
printf(
"ages[%d]=%d\n", i, ages[i]);
}
}

 数组元素在内存中的存放顺序与变量不同   第[0]个元素是放到低位的,依次往高位

在调用函数时传入参数是数组的时候,实际是将数组的地址传过去,是地址传递(非值传递),所以在函数中改变数据元素值的时候,数组元素的值是会改变的.

#include <stdio.h>

// 数组作为函数参数,可以省略元素个数
// 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组

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;
}

 数组与函数的练习

#include <stdio.h>

int 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<length; i++) //注意,为了提高效率 i的值是从1开始遍历的
{
// 如果当前元素大于max,就用当前元素覆盖max
if (array[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;
}

 

本站声明
本文转载自:http://www.cnblogs.com/iedo/p/5038491.html     作者:呆而肥     发布日期:2015/12/11     本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。


 
© 2014-2017 ITdaan.com 粤ICP备14056181号