1.数组的定义以及初始化
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}
- 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;
}