数组(1)
数组
一数组的概念
一组具有相同数据类型的元素的集合
元素:组成数组的基本单位
注意:同一个数组只能存储同一种数据类型的元素
可以是任意类型的数据
数组大小
又叫数组长度
数组里可存储的元素个数
定义数组时:常量,宏定义
宏定义——替换
define shi 10;
之后的代码中所有的10都可以用shi来表示
const修饰符==》常量
const int n=10;
//n就是常量了,一般不能修改
C语言与c++中const的区别
C语言的const是假的
因为是可以通过指针来修改这个常量
c++的const是真的
而c++中的就不能被修改
数组的内存
1.数组的内存是连续的
2.数组的长度是有限的
3.数组元素类型是相同的
4.数组长度可以用sizeof()求出来,求得的是字节数,而不是元素个数
元素个数=数组正题所占的字节数/单个元素所占的字节数
数组的初始化与赋值
数组赋值:——四种方式
//第一种全部给初始值
int a[4] = { 1,2,3,4 };
//第二种给部分初始值
int a[4] = { 1,2 };
//未赋值的就是0
//第三种全部不给值
int a[4] = {};
//全部为0
//第四种不定义数组长度
int a[] = {1,2};
//必须给值初始化
//给多少个数,长度就是多少
数组元素的访问
int a[] = { 1,2,3 };
int str[3] = { 4,5,6 };
printf("%d\n",sizeof(str));//输出12
printf("%d\n",sizeof(str)/sizeof(int));//输出3
printf("%d\n",a[0]);
printf("%d\n",a[1]);
printf("%d\n",a[2]);
printf("%d\n", a[3]);
使用循环,遍历数组
遍历:将整个数组过一遍
//第一种遍历方式
int a[5] = { 2,6,7,3,4 };
for (int i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
//第二种遍历方式
int a[5] = { };
for (int i = 0; i < sizeof(a) / sizeof(int); i++)
{
a[i] = i;
}
for (int i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
size_t == unsigned int
typedef ——给类型取别名
typedef int kiss;
typedef int xxx;
xxx a=10;
//意思就是 int a=10
typedef int str [5];
str a={1,2,3,4,5};
字符数组
字符数组也是数组,只不过元素类型是字符
1.初始化与赋值
普通数组形式
2.可以使用字符串初始化,可以省略大括号
char arr[10]={'a','s'}
//和普通数组赋值一样
char arr2[5]="addw";
char arr3[5]="12345"//是错的
//因为在结尾默认加上\0要占一个位
// \0 :结束符,标记字符串结束
//每一个字符串数组都会在末尾加上\0
char arr4[4]="abc\0"
printf("%d",sizeof("abc"));
//输出结果为4,加了\0的
3.直接打印整个字符数组
char arr[6] = { 'a','d','5',68,'\101' };
printf("%s\n", arr);
cout << arr << endl;
//打印结果为:ad5DA
//从头开始到'\0'结束
char arr[7] = { 'a','d','5','\0',68 ,'\101'};
printf("%s\n", arr);
//打印ad5
char arr[]="abcd\o1234fr";
printf("%s",arr);
//输出 abcd
// 34fr
// 因为\012对应的ASCII码是\n,换行符
\123——\后面跟三位数字,表示一个八进制数
\——转义字符,要跟后面的东西