栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言笔记——数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言笔记——数组

一、一维数组的创建和初始化

什么是数组:一组相同类型元素的集合。

一维数组的创建:

int arr[];
char s[];
double arr1[];

变长数组:数组中存储的元素是变量。

int n=0;
scanf("%d",&n);
int arr[n];

变长数组在C99之前是比支持的,在C99标准后可以使用。

初始化

1.完全初始化:把数组中的每一个元素都赋值

int arr[10]={1,2,3,4,5,6,7,8,9,10};

2.不完全初始化:赋值一部分元素,其他元素默认为0。

int arr[10]={1,2,3,4,5};

 二维数组

二维数组的创建方式

int arr[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
char arr[3][4]==['0','1,'2','3','4','5','6','7','8','9','10','11'}
//arr[0],arr[1],arr[2]
//可以理解为行数组的数组名

注意:二维数组不可以省略列数。必须要指定列数。

 数组作为参数传递

1.冒泡排序

数组传参传的是首元素的地址。

错误写法:

因为数组传的是首元素地址,所以在计算sz时,其实是sizeof(地址)/sizeof(第一个元素的大小)=1.

正确写法

void  bubble(int*arr)
{
    int i=0;
    for(i=0;iarr[j+1])
            {
                int tmp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tmp;           
            }        
        }  
    }
}
int main()
{
   int arr[10]={0};
    int i=0;
    for(i=0;i<10;i++)
    {
        scanf("%d",&arr[i]);    
    }
    int sz=sizeof(arr)/sizeof(arr[0]);
    bubble(arr);
    for(i=0;i<10;i++)
    {
        printf("%d ",arr[i]);    
    }
    return 0;
}

什么是数组名:

//数组名是什么:
int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,10};
    printf("%pn",arr);
    printf("%pn",&arr[0]);
    //两种特殊的情况
    //情况一
    printf("%dn",sizeof(arr));//这里的arr是整个数组的名字;
    //情况二
    printf("%pn",&arr);
    //&arr,这里的arr表示整个数组名,这里取出的是整个数组的地址。
    printf("%p",arr+1);//跳过数组的一个元素
    printf("%p",&arr+1);//跳过整个数组
    printf("%p",&arr[0]+1)//跳过数组的一个元素
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457228.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号