1、一维数组
注意点:
1)数组类型由数组内的元素决定。数组的大小也又数组内的元素决定。一个字节有八位。
bool size is 1
short int size is 2
int size is 4
long int size is 4
long long size is 8
float size is 4
double size is 8
long double size is 8
2)数组定义必须有类型名,数组名,数组数量;而且数组的元素个数可以去是常量,也可以是变量,但在vs2019里面不支持数组数量是变量,没有元素个数也可以,但是必须要有初始化;
int a [5];
int a[];//会报错,因为没有元素个数;
int n =5;
int a [n];//会报错,因为n为变量
const int n =5;
int a[n];//正确
int [] ={1,2,3};//这样也可以
3)在vs2019中由于不遵循C99标准,因此类似于这种的定义数组是会报错的
int n =0;
scanf_s("%d",&n);
int a [n]={};//这样是会报错的
/*可以进行以下操作*/
const int n = 5;
int a[5]={};
4)定义空数组
int a[]={};//这样是不不可以的,没有意义
int b[6]={};//这样是可以的
5)用const修饰数组代表数组里的每一个元素都不能再进行改变,但是不能这样定义,必须进行初始化·
const int n;//这样定义是不行的,相当于定义了一个随机的常变量,与常变量的定义不相符
const int m[5];//这样也是不可以的,相当于定义了5个不能改变的随机数组元素
const int m[];//同理这样也是不可以的
const int n =5;
const int m[5]={};//这样可以
6)定义一个有n个指针变量的数组
int *p [5];
7)\0和字符串同时出现
char a []={'a'};
sizeof(a);//1
char a[]={"1,2"};
sizeof(a);//3,有一个\0隐藏,标志结束
8)数组名
数组名除了在sizeof()中的意义不一样之外,其他地方都表示的是数组的首地址。a[1]代表*(a+1)。
另外在输出数组时
for(int i =0;i<n;i++)
{
printf("%d",a[i]);//也可用*(a+i),a[i]代表*(a+i),同理i[a]代表*(i+a)都是一样的。这就是数组下表从零开始的原因
}