2018.9.9第十七次笔记

c语言学习笔记9—数组

数组实际就是一种数据类型,数组把一堆数按照一定的数据结构进行了封装,形成了一种复合式的数据类型。
回顾下:
笔记中原来讲过简单的数据类型,叫基本数据类型:整形,浮点型,字符型。
今后学的符合数据类型包括:数据、结构体、共用体。
下面演示数组的定义和使用。

/*  
    数组的学习 
*/
#include<stdio.h>


int main()
{

    int a[6];
    a[0] = 1;
    a[1] = 2;
    a[2] = 3;
    a[3] = 4;
    a[4] = 5;
    a[5] = 10;

    printf("a[0]=%d.\n",a[0]) ;
    printf("a[1]=%d.\n",a[1]) ;
    printf("a[2]=%d.\n",a[2]) ;
    printf("a[3]=%d.\n",a[3]) ;
    printf("a[4]=%d.\n",a[4]) ;
    printf("a[5]=%d.\n",a[5]) ;

}

结果显示如下:
这里写图片描述

数组的初始化有两种:
(1)完全初始化。

/*  
    数组的学习 
*/
#include<stdio.h>


int main()
{
    int i;
    int a[6] = {1,2,3,4,5,10};

    for (i=0; i<6; i++)
    {
        printf("a[%d] = %d.\n",i,a[i]);
    }
}

结果显示如下:
这里写图片描述
(2)不完全初始化:自动将没有初始化的值赋0。

/*  
    数组的学习 
*/
#include<stdio.h>


int main()
{
    int i;
    int a[6] = {1,2,3};

    for (i=0; i<6; i++)
    {
        printf("a[%d] = %d.\n",i,a[i]);
    }
}

结果显示如下:
这里写图片描述
在gcc编辑器中有一种特有的初始化方式,适用于定义很大数的时候,比如int[3000]中,只关心第100元素int[99],那么可以如下定义:

int[3000] = {[99]=100};
```5
这就将第100元素初始化为100,其余的全部初始化为0----------
下面记录下数组类型。
整形数组:int a[5]={1,2,3,4,5};
浮点型数组:float a[5]={};
双精度浮点型数组:double a[5]={};
字符型数组:char a[5]
这里说一下字符型数组,在字符型数组初始化时,有两种方式:
(1)新手初始化方式:





<div class="se-preview-section-delimiter"></div>

include

#include<stdio.h>
int main()
{
    int a=1;
    float b=1.1;
    double c=3.14;
    char d[]="abcde";
    printf("a = %d.\n",sizeof(a));
    printf("b = %d.\n",sizeof(b));
    printf("a = %d.\n",sizeof(c));
    printf("a = %d.\n",sizeof(d));

    return 0;
 } 

结果显示如下:
这里写图片描述
从中可以发现:
int占4个字节
float占4个字节
double占8个字节
char占1个字节???但是我输入了5个字符,每个字符占1个字节,总共不是应该等于5吗?怎么会是6!没错,就是6,应为字符串有个结尾符会自带一个\n,实际展开就是:‘a’,‘b’,‘c’‘d’‘e’‘\0’。
当c语言使用字符串初始化时,会在最后自动添加一个\0,‘\0’也就是字符串的结尾符,编辑器看到这个符号就会知道这个字符结束了。所以“abcde”其实就是6个字符。

猜你喜欢

转载自blog.csdn.net/weixin_43132661/article/details/82563950