黑马程序员——C语言中的数组

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、数组的基本概念

1.一个int行变量或者一个float变量能保存一个人的分数,如果要保存一个班级的分数,那就远远不够。

因此,我们要用到数组。

2.数组就是用来存放一组数据的

3.数组只能存放一种类型的数据,不能同时存放int型数据和float型数据或者其它两种不同的数据类型

4.数组内部存放的数据称为元素

二、定义数组

1.格式

数据类型数组名[];

int array[4];

2.初始化数组

初始化数组的几种方式

int array1[4] = {1,2,3}
int array2[4] = {1,2,3,4};
int array3[] = {1,2,3,4};

3.数组内存分析

1)内存的分配是从高地址进行的,但是一个数组的内部元素是从低到高进行的

2)数组名的作用,用来查看元素地址

char c[5] = {'a','A','D','e','f'};

4.数组的使用

1)数组与函数参数

2)数组元素作为函数参数

3)数组作为函数参数(sizeof注意)

 题目:数组作为函数参数,输出一个数组

#include <stdio.h>

void changeArray(int array[])
{
    array[0] = 1;
    array[1] = 2;
}

void changeNumber(int p)
{
    p = 10;
}

int main()
{
    int ages[] = {5,4,3,2,1};
    int a = 99;
    int counts = sizeof(ages)/sizeof(int);
    
    changeArray(ages);
    changeNumber(a);
    
    for (int i=0; i<counts; i++)
    {
        printf("ages[%d]=%d\n",i,ages[i]);
    }
    
    printf("\na=%d\n",a);
    
    return 0;
}

4)遍历数组元素

两种方式遍历(while循环和for循环)

题目:输出一个数组(for循环)

#include <stdio.h>

int main()
{
    int ages[] = {10,11,12,13,14,15};
    int counts = sizeof(ages)/sizeof(int);
    
    for (int i=0; i<counts; i++)
    {
        printf("ages[%d]=%d\n",i,ages[i]);
    }
    
    return 0;
}

5)遍历元素值和元素地址

 *题目:设计一个函数,找出整型数组元素的最大值

#include <stdio.h>

int getMaxOfArray(int array[],int length)
{
    int maxOfArray = array[0];
    
    for (int i=1; i<length; i++)
    {
        if (maxOfArray<array[i])
        {
            maxOfArray = array[i];
        }
    }
    
    return maxOfArray;
}

int main()
{
    int array[] = {1,2,5,4,3};
    int length = sizeof(array)/sizeof(int);
    int maxArray = getMaxOfArray(array,length);
    
    printf("The max number of array is : %d\n",maxArray);
}

 *题目:数组寻址

#include<stdio.h>

int main()
{
    char address1[5] = {'a','F','R','B','E'};
    for (int i=0; i<5; i++)
    {
        printf("address1[%d]的地址为:%p\n",i,&address1[i]);
    }
    
    printf("\n");
    
    int address2[] = {34,54,56,5};
    int n = sizeof(address2)/sizeof(int);
    for (int j=0; j<n; j++)
    {
        printf("address2[%d]的地址为:%p\n",j,&address2[j]);
    }
    
    return 0;
}

三、二维数组

1.二维数组的概念

一维数组能表示一个班人的成绩,二维数组则可以表示多个班级的成绩;

二维数组是一个特殊的一维数组:它的元素是一维数组;

例如int a[2][3] = {{123}{124}}可以看作由一维数组

a[0] = {123}和一维数组a[1] = {123}组成。

3. 初始化
int a[1][4] = {1,2,3,4,5,6};
int a[2][2] = {{1,2},{3,4}};
int a[][4] = {1,2,3,4};

 *题目:输出一个二维数组

#include<stdio.h>

int main()
{
    int arr2[3][5]={
        {1,2,3,4,5},
        {4,5,76,7,68},
        {45,6,7,87,1}
    };
    
    for (int i=0; i<3; i++)
    {
        for (int j=0; j<5; j++)
        {
            printf("%d-",arr2[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值