数组其实就是一组相同类型元素的集合。
数组的创建——变长数组(既不同于普通的数组,后缀中是已经给定的常量,而是一个变量)
//变长数组的引用只有在C99的标准之后才出现,并且变长数组是不能够进行数组的初始化的。
关于变长数组的定义:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int arr[n];
int i = 0;
for(i = 0;i < n;i++)
{
arr[i] = 0;
}
for(i = 0;i < n;i++)
{
printf("%d\n", arr[i]);
}
return 0;
}
1.关于数组的初始化问题
数组的初始化指的是,在创建数组的时候给数组内容一些合理的初始值(初始化)。
1)不完全初始化
int arr[10] = { 1,2,3 };
不完全初始化,剩余的元素默认初始化是0。
2)完全初始化
int arr2[5] = { 1,2,3,4,5 };
3)未指定大小的数组(根据初始化内容来确定)
int arr3[] = { 1,2,3 };
此时数组只有arr[0],arr[1],arr[2]。
4)关于字符数组的初始化
char arr7[] = {'a','b','c'};
//这种元素是字符,数组的元素不包含'\0'
char arr8[] = "abc";
//这种元素是字符串,数组的元素包含'\0'
2.关于一维数组的使用问题
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int i = 0;
int sz = sizeof(arr)/sizeof(arr[0]);//计算数字元素个数的方法
for(i = 0;i < sz;i++)
{
printf("&arr[%d] = %p\n", i, &arr[i]);
}
return 0;
}
由运行结果可得知,数组在内存中是连续存放的。随着下标的增长,数组地址由低到高变化的, 差了4个字节是因为,一个整型元素的4个字节。只要知道第一个元素的地址,往后依次遍历就可以找到所有的元素。