2023.3.26

一维数组的创建和初始化  数组是一类相同类型元素的集合 int arr[100]放了一百个元素.

数组的创方式 type_t   arr_name   [count_n];

c99引入了变长数组的概念,允许数组的大小用变量来指定,如果编译器不支持c99,那么就不能使用变长数组.

数组的初始化    int arr[10] = {1,2,3,4};//不完全初始化 ,在c99里变长数组不能初始化

char 数组里面储存的是ASCII值.

arr[] = {1,2,3};//会根据内容初始化大小.

int arr[10];//不初始化里面放的都是错误值或随机值,  局部变量不初始化都不让用.全局变量和静态变量不初始化默认是0.

c语言有三个区,栈区,堆区,静态区,  静态区变量不初始化默认是0,  栈区不初始化默认是变量

arr[] = {1,2,3,4};//有4个字符           arr[] = "1234";//有5个字符.

[]下标引用操作符,arr[4]中,arr,4是[]的两个操作数.

arr[] = {1,2,3,4}用strlen(arr)得出的长度是1,size_t strlen( const char *string ); 他检测的长度是一个字符或字符串的长度,所以要求这个数组大小就用sizeof(arr)/sizeof(arr[0]);

一维数组在内存中的存储 一维数组在内存中是连续存放的,相邻的两个元素差一个定义类型的大小随着下标的增长,地址由低向高变化. 

%p是用来打印地址的,使用16进制.

二维数组的创建  int arr[3][5]; → 三行五列的数组

二维数组的初始化 int arr[3][5] = {1,2,3,4,5,6},把第一行填满后填充第二行

                              int arr[3][5] = {{1,2},{4,5},{6,7}};  第一行是1,2第二行是4,5  第三行是6,7

定义的时候省略行数会根据初始化确定行数,但是列不能省略.

int arr[5][3] = { 3 };初始化的只是第一个元素,其它默认为0.

sizeof(arr)是整个数组大小    sizeof[0]是第一行大小   sizeof[0][0]是第一个元素大小

sizeof(arr)/ sizeof[0] 是有几行                     sizeof[0]/sizeof[0][0]是第一行有几个元素也就是有几列

二维数组也是连续存放的,即使是有第一行和第二行,第一行放完放第二行. 

数组下标要是小于0或者大于n-1就是数组越界了.c语言本身不检查越界,编译器也不一定报错,所以程序员需要自己检查越界.

整形和字符是两个概念,当一个数组char arr[] ={‘1’,‘2’,‘3’};使用strlen求其长度,长度值是一个随机数,因为他会寻找3后面第一个\0作为结尾. 

数组成为函数参数 冒泡排序的函数来排序arr数组的内容,数组命就是数组首元素地址(sizeof(arr)和&arr是两个例外)①sizeof计算整个数组大小②&arr直接打印还是首元素地址,但是&arr+1是地址直接加整个数组大小.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值