C语言概括(数组)

C语言概括(数组)

一,数组的概念

数组:就是批量创建一组相同类型的变量。

二,数组的表达式
int arr[4] = {1,2,3,4};

int:就指批量创建一组int类型变量
arr:数组名
{1,2,3,4}:表示设置变量初始化
a) [4]中的4是可以省略的,数组的长度就和初始化列表里的元素个数一致;
b) [4]如果不省略的时候,后面的初始化元素个数不能比4多(否则就是未定义行为)
c) [4]如果不省略,后面的初始化列表的元素可以比4少,少的时候,就把数组剩下的元素填成0;
d) 创建数组的时候,[ ]里面的数字只能是一个常量,不能是变量.(在C89中);
e) 如果省略了[4]中的数字,就必须使{ }初始化;
f) 如果没有省略[4],并且也没有初始化,如果是一个局部变量就是上次残留的值;如果是一个全局变量,会被自动初始化为0;

三 字符数组的初始化

针对字符数组的初始化 :
(1)可以像普通数组一样使用{ }初始化

char str [] = {'a','b','c',};

这个数组长度为3
(2) 也可以使用" "来对一个字符串进行初始化

char str2 [] = "abc";

这个数组的长度为4(多了一个"\0")

四 数组的使用

(1) 求数组的长度

sizeof(arr)/sizeof(arr[0])

(2)取下标
[ ] 从0开始到 len-1结束,一旦下标越界就是未定义行为

(3)数组的元素处于连续的内存空间上

(4) C语言中的数组,当在函数传参,参与运算的时候,很容易就转成了指针(指向首元素的指针);

五 二维数组

(1)概念
二维数组:本质上也是一个一维数组,只不过每个元素又是一个一维数组(不管是几位数组本质上都是一维数组)
(2)表达式

int arr[3][4]={0};

a) 是一个长度为3的一维数组,每个元素又是长度为4的一维数组构成(3行4列)
b) 对于二维数组或者三维四维数组等更高维的数组,第一个[ ]中的数字可以省略,后续数字就不能省略了
c) 二维数组在内存上也是一个连续内存存储的空间
d)如果给数组初始化的时候这样写

int arr[3][4] = {
     (1,2)
     (3,4)
     (5)
}

输出的结果为:
2 4 5 0
0 0 0 0
0 0 0 0
(因为逗号表达式 a,b,c的值就是最后一个逗号后面的值也就是c);

六 冒泡排序
#include<stdio.h>
void bubblesort(int arr[],int size){//每次从后往前遍历比较相邻元素,每一趟都能把最小值放在最前面
//bound是边界的意思,使用这个变量的值表示已排序区间和待排序区间的分界线
    int bound = 0;//[0,bound)是已排序区间;[bound,size)是待排序区间
    for(;bound < size;bound++){
    //通过这个循环表示后续的比较相邻元素比较的趟数
        for(int cur = size-1;cur > bound;cur--){//用size-1表示最后一个元素下标
           if(arr[cur-1]>arr[cur]){//使用cur-1表示相邻元素
              int tmp = arr[cur-1];
              arr[cur-1] = arr[cur];
              arr[cur] = tmp;
            }
         }
     }
}
int main(){
    int arr[] = {9,5,2,7,3,6,8};
    int size = sizeof(arr)/sizeof(arr[0]);
    bubblesort(arr,size);
    for(int i = 0;i < size;i++){
        printf("%d",arr[i]);
    }
    printf("\n");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值