美文网首页
C语言数组

C语言数组

作者: 一直很安静_25ae | 来源:发表于2019-06-11 22:45 被阅读0次

数组的基本使用

数组的定义格式:
类型 数组名[元素个数];
int ages[5] = {19, 29, 28, 27, 26};

数组的注意事项

存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)
数组名的作用,查看元素地址
数组越界的注意

使用注意

正确写法

  >   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['A'-50] = {10, 11, 12, 14, 16};
 >  /*
    int count = 5;
    int ages[count];
    ages[0] = 10;
    ages[1] = 11;
    ages[2] = 18;
    */

错误写法

//第一种情况~没有初始化数组个数,并不知道需要分配多少内存空间
   int ages[]; 

//第二种情况只能在定义数组的同时进行初始化
    int ages[5];
    ages = {10, 11, 12, 14};

//第三种情况 如果想再定义数组的同时进行初始化,数组元素个数必须是常量,或者不写
  int count = 5;
  int ages[count] = {10, 11, 12};

计算数组元素的个数

    int count = sizeof(ages)/sizeof(int);

数组和函数

// 数组作为函数参数,可以省略元素个数
// 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
 array[0] = 100;
}
//基本数据作为函数参数是值传递
void change2(int n)
{
    n = 100;
}

int main()
{
    int ages[6] = {10, 11, 10, 11, 10, 11};
    
    change(ages);
    
    change2(ages[0]);
    
    return 0;
}

获取数组中的最大值

int maxOfArray(int array[], int length)
{
    // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节
    
    //int size = sizeof(array);
    //printf("array=%d\n", size);  得到的是8

    // 1.定义一个变量存储最大值(默认就是首元素)
    int max = array[0];    
    // 2.遍历所有元素,找出最大值
    for (int i = 1; i<length; i++)
    {
        // 如果当前元素大于max,就用当前元素覆盖max
        if (array[i] > max)
        {
            max = array[i];
        }
    }
    
    return max;
}

二维数组

什么是二维数组?
一个数组能表示一个班人的年龄,如果想表示很多班呢?
int ages[3][10]; 三个班,每个班10个人
相当于3行10列
相当于装着3个一维数组
二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素

int main()
{
 /*
     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}
    };
return 0;
}

字符串

char name[] = "jackChan";

char name2[8] = {'i', 't', '\0'};

字符串是以 \0为标志的

/*
 \0的作用
 1.字符串结束的标记
 2.printf("%s", name2);  
 会从name2这个地址开始输出字符,直到遇到\0为止
因为name2只是普通的字符数组,(没有指定分配多少内存空间,就会以字符的个数进行分配存储空间,由于不包含\0,所以是一个普通的字符数组,而printf中%s是字符串,所以会先找到name2的内存地址,"注意:分配内存的时候寻址是先大后小,所以name[]的内存地址比name2的内存地址大",没有\0,会继续向下找到name[]中,直到遇到\0才结束)
 */

int main()
{
    char name[] = "itc\0ast";
    
    char name2[] = {'o', 'k'};
    
    printf("%s\n", name2);  //输出的结果是okitc
    
   // printf("%s\n", &name2[1]);
    
    return 0;
}

strlen函数

/*
strlen 函数:计算字符串的长度
1 计算的是字符数,并不是字数,一个汉字算作3个字符
2 计算的字符不包含\0
3 从某个地址开始数 字符的个数,直到遇到\0为止
4 strlen 函数声明在string.h中
*/


#include <string.h>
#include <stdio.h>

int main()
{

    int size = strlen("哈haha"); 

    printf("%d\n", size);
  
    char name[] = "jack";
    
    printf("%s\n", name); // jack
    
    printf("%c\n", name[3]); // k
    
    
    return 0;
}

字符串数组

#include <stdio.h>
int main()
{
    char name[] = "jack";
    
    char name1[] = "rose";
    
    char name2[] = "jim";
    
    char name3[] = "jake";
    
    char names[2][10]= {"jack", "rose"};
    
    //printf("%s\n", names[0]);
    
    //printf("%c\n", names[0][3]);
    
    char names2[2][10] =
    {
        {'j', 'a', 'c', 'k', '\0'},
        {'r', 'o', 's', 't', '\0'}
    };
    
    
    return 0;
}

相关文章

  • C语言数组的升维与降维之说

    C语言数组的升维与降维之说 C语言数组的升维 C语言数组的降维

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 0基础学习C语言第七章:数组(2)

    C语言 多维数组 C 语言支持多维数组。多维数组声明的一般形式如下: type name[size1][size2...

  • iOS开发 -- C语言基础6(数组)

    iOS开发 -- C语言基础6(数组) C语言数组 一、数组的概念 用来存储一组数据的构造数据类型 特点:只能存放...

  • 2020-11-17--02--windows 数据类型

    windows系统是c语言开发的 字符数组,是c语言,重新定义的 Lstrlen-------C语言函数=====...

  • 数据结构--单向链表

    C语言中,我们在使用数组时,会需要对数组进行插入和删除的操作,这时就需要移动大量的数组元素,但在C语言中,数组属于...

  • C语言数组

    #include int main (void){ int a [20];//称a为20个元素的数组,每个...

  • C语言----数组

    C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为...

  • C语言数组

    说真的感受到c语言真的很灵活,语法没有那么死板 1.int array[] = { 1, 2, 3, 4 };可以...

网友评论

      本文标题:C语言数组

      本文链接:https://www.haomeiwen.com/subject/uffhfctx.html