C语言笔记——数组

C语言笔记——数组,第1张

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)//跳过数组的一个元素
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5432746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存