第一阶段07 C语言数组初阶

*加入CSDN是出于记录,希望有不足之处多加指正。

1、基本概念

可以一次性定义多个相同类型的数据,并且使用的都是一片连续的内存。
int a,b,c,d,;

int a [3];

1.先申请一片内存名字是 a ;
2.该内存中存放 int [3];分成三份,三份中每一个份都是一个整型 4字节。
如何初始化:(定义时顺便赋值称为初始化)

int a [10] = {
    
    1,2,3,4,5,6,7,8,9,10};  //初始化
int b [9] = {
    
    1,2,3,4,5,6,7,8,9,10};   //错误,数组越界
// 编译器出现警告,数据10将不会被放到内存中,被编译器优化掉了

int c[] = {
    
    1,2,3,4,5,6,7,8,9,10};   //正确
int d[10] = {
    
    1,2,3}; //正确的,不完全初始化,未初始化的数据会被默认写成 0 
int f[10];  //没有初始化,数组的每个数组都是随机值

2、数组元素的引用

存储的结构:一篇连续的内存,按照具体类型来分割成若干个大小相同的小格子
元素下标:

int arr [3] = {
    
    100,200,300};
printf("arr[2]:%d\n" , arr[2]);

arr = {
    
    150 ,250 ,350};  //错误,数组只有在初始化的时候可以整体赋值,如果想修改其他值,需要一个一个元素的修改
arr [1] = 250; //修改数组的第二位元素为 250

a[11]= 350;  //在C语言中唯一一个允许越界访问的方案,但是目前打写法是属于非法访问的,不属于自己打内存,后期可以通过函数来扩展内存。

3、字符数组

概念:专门用来存放字符类型数据的数组,就成为字符数组。

char c1[3] = {
    
    'a','b','c'};      //字符数组
char c1[4] = {
    
    'a','b','c','\0'}; //字符串数组
    //有结束符标记表示为字符串数组
char c3[10] = {
    
    "hello"} ; //使用字符串来初始化数组
char c4[10] = "hello";    //大括号可以省略 
c3[3] = 'L';

4、多维数组

概念:在一个数组里面还有数组。

int arr [2][3];  //二维数组

int a[2][3] = {
    
    {
    
    1,2,3},{
    
    4,5,6}};
int b[2][3] = {
    
    {
    
    1,2,3},{
    
    4,5,6},{
    
    7,8,9}};  //错误的,越界访问
int c[2][3] = {
    
    {
    
    1,2,3},{
    
    4,5,6,7}};       //错误的,越界访问

在这里插入图片描述在这里插入图片描述

5、数组万能拆解方法

任意打数组不管有多复杂,都可以分为两部分
第一部分:说明数组的名字元素的个数;
第二部分:说明该数组中存放的类型;

int a [4] ; //第一部分 a[4],第二部分说明数据类型为 int;
int b [3][4]; //第一部分 b[3], 第二部分 int[4],说明该数组中存放的类型为数组
int *c [6];  //第一部分 c[6] ,第二部分int * ,说明该数组用来存放整型指针
int (*e[7])(int ,fole); //第一部分 e[7],第二部分 int (*)(int ,fole)

猜你喜欢

转载自blog.csdn.net/m0_61557794/article/details/121856999
今日推荐