C语言初阶2:数组

这篇博客详细介绍了C语言中的数组,包括初始化、数组与指针的关系、函数与数组的交互、多维数组的使用,以及const数组和变量指针的区别。通过实例解析了数组的整体和部分初始化,以及如何通过指针操作数组。同时,讨论了如何在函数中传递和返回数组,强调了二维数组的声明、初始化和访问方式。
摘要由CSDN通过智能技术生成

1、初始化

1.1 整体初始化

(1)代码1

#include <stdio.h>
void main(){
   
	int arr[12];
	for(int i=0;i<12;++i){
   
	    printf("%d ",arr[i]);
	}
}

(2)代码2

#include <stdio.h>
void main(){
   
    int arr[12] = {
   0};
    for(int i=0;i<12;++i){
   
        printf("%d ",arr[i]);
    }
}

(3)代码3

#include <stdio.h>
void main(){
   
	int arr[12] = {
   2};
	for(int i=0;i<12;++i){
   
	    printf("%d ",arr[i]);
	}
}

(4)输出结果分析

1)代码1:输出全为不规则的数字
2)代码2:输出全为0
3)代码3:输出一个2,其他全为0

(5)结论

1)数组未初始化,数组里面的值都是随机值。
2)数组初始化为{
   0},数组里面的值都是03)数组初始化为{
   非零值},数组里面第一个值是非零值,其他的值都是0

1.2 部分初始化

#include <stdio.h>
void main(){
   
    int arr[12] = {
   [2]=2,[5]=5};
    for(int i=0;i<12;++i){
   
        printf("%d ",arr[i]);
    }
}

指定下标的值被赋值,其他为0

1.3 大小

#include <stdio.h>
void main(){
   
    char carr[12];
    int iarr[12];
    double farr[12];
    printf("carr = %d\n",sizeof(carr));
    printf("iarr = %d\n",sizeof(iarr));
    printf("farr = %d\n",sizeof(farr));
}

输出结果为:
在这里插入图片描述
sizeof给出整个数组所占据的内容的大小。数组大小=元素大小*数组个数。

问题9:已知数组arr,如何求出数组元素个数?
sizeof(arr)/数组类型大小
char =1
int=4
float=8

1.4 赋值

int days[]={
   31,28,31,30,31,30,31,31,30,31,30,31};
int arr = days;

这个时候的赋值是错误的,因为int只是在int一个类型,这个时候days代表的是数组days[]的首个元素或者首元素的地址

2、数组与指针

2.1 数组名是地址

数组名是数组第一个元素的地址

#include <stdio.h>
void main(){
   
    int arr[] = {
   1,2,3,4,5,6,7,8};
    printf("&arr=%p\n",&arr);
    printf("arr=%p\n",arr);
    printf("&arr[0]=%p\n",&arr[0]);
}

输出为:

&arr=000000000061FE00
arr=000000000061FE00
&arr[0]=000000000061FE00

数组下标实现的操作指针也可以实现。数组名+下标表示下标i元素的地址
在这里插入图片描述
所以,遍历数组可以是:

#include <stdio.h>
void main(){
   
    int arr[] = {
   1,2,3,4,5,6,7,8};
    for(int i=0;i<8;++i){
   
        printf("%d\n",*(arr+i)); 
    }
}

数组名是不可以改变的!
i

nt arr1[] = {
   1,2,3,4,5,6,7,8};
int arr2
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值