数组基础知识1

来源:互联网 发布:英敏特信息咨询 知乎 编辑:程序博客网 时间:2024/06/06 03:46
1.数组的定义以及初始化
  • int arr[10];//定义一维数组:类型符 数组名[常量表达式:必须是常量,不能是变量,当然符号常量也是合法的。此时(定义时)10表示数组的长度。
  • arr[3]=100;//此时(使用时)3表示小标。注意:下标是从0开始的。arr[0]~arr[9].
  • 在定义数组时对全部数组元素赋予初值:
  • int arr[10]={1,2,3,4,5,6,7,8,9,20};即:arr[0]=1,arr[1]=2,arr[2]=3……arr[9]=10
  • 只给数组中的一部分元素赋值:
  • int arr[10]={1,2,3,4};//表示:只给前面四个元素赋初值,系统自动给后面六个赋初值为0.(聚合类型只初始化一部分,剩余部分为0.)
  • 随机值
  • int arr[10];
  • 使一个数组中全部元素值为0
  • int arr[10]={0,0,0,0,0,0,0,0,0,0}; 
  • int arr[10]={0};//未赋值的部分元素自动设为0
  • 赋值时可以不指定数组长度
  • int arr[4]={1,2,3,4};或者 int arr[]={1,2,3,4};

2.数组越界即非法访问内存(此程序在vc6.0中出现死循环)

inti;int arr[10];{for(i=0;i<=10;i++){arr[i]=0;printf("%d\n",i);}}
3.数组名arr在定义数组的同一个函数中的如下情况表示整个数组
A:sizeof(arr)表示整个数组占用的字节数。可以通过sizeof(arr)/sizeof(arr[0])求数组长度。
B:&arr+1表示加整个数组的大小。
C:其他情况一维数组数组名表示数组首元素的地址。例如:int arr[10];int *p=arr;
4.真题演练
给定如下代码,int x[4]={0};int y[4]={1};数组x和y的值为(B)
A:{0,0,0,0},{1,1,1,1}  B:{0,0,0,0},{1,0,0,0}

5.数组的简单输出

#include <stdio.h>int main(){int drr[]={1,2,3,4,5,6,8,9};drr[0]=100;drr[6]=12;for(int i=0;i<sizeof(drr)/sizeof(drr[0]);i++){printf("%d ",drr[i]); //printf("%d ",sizeof(drr));}return 0;}
6.将arr的数据逆序输出

#include <stdio.h>void Show(int arr[],int len)//输出函数{for(int i=0;i<len;i++){printf("%d ",arr[i]);}printf("\n");}void Reverse(int arr[],int len)//逆序输出。整型数组一定要传长度。{int tmp;for(int i=0;i<len/2;i++){tmp=arr[i];arr[i]=arr[len-i-1];arr[len-i-1]=tmp;}Show(arr,len);}int main(){int arr[]={1,2,3,4,5,6,7,8,9,10};Reverse(arr,sizeof(arr)/sizeof(arr[0]));//Show(arr,sizeof(arr)/sizeof(arr[0]));//arr不表示整个数组return 0;}