//四种常量
1、字面常量:‘a’——字符常量;“asdfasdf”——字符串常量;10——整型常量;3.114浮点型常量
2、const修饰的常变量(常变量是一种常量)(不可更改)
在int num2=30前加个const 就由变量→常变量
3、define定义的标识符常量
#define pi =3.14159
4、枚举常量
enum Sex
{
MALE,
FEMALE,
SECRET
}
枚举常量的值默认是从0开始的,且依次加1.
//字符串
//定义:用英文的双引号引起来的一串字符
char ch =‘a’; %c
字符串定义: %s
char name[6]={'q','w','e','r','t','\0'};字符串的结束标志是"\0"
printf("%s\n",name};
or
char a[] = { 'a','b','c','d','e','\0'};(“[]”中括号内也可以不写数字,它自己会帮忙计算)
字符串常量 %s
char a[] = { “abcde”};(优势:不用加:"\0";用双引号括起来的)
or
char a[] = “abcde”;
“\0”不占字符串长度
strlen();-->计算字符串长度(要去前面#include<string.h>)
strlen:求的是字符串的大小,不包括\0
sizeof:
//数组——(一组相同类型的元素组成的集合)
①元素类型 数组名[元素个数] (int a[6];)
②数组不能动态定义(int a[n];——>n为动态的,所以是错误的)
③int a[5];//创建一个具有5个元素的数组;
a [4];//访问a数组中的第5个元素;
④charr arr[ ]="hello";(hello有5个字符,但[]内应为4,因为是从0开始的)
⑤初始化
(1)int a [10]={4}; (只将第一个元素赋值为4;剩下的全为0)
同理也可以赋予前一部分的值,后面的就都为0;
(2)也可以对某些指定元素进行初始化。
int a[10]={[3]=2,[6]=5;[9]=4}; (其余的均为0)
⑥数组有两种情况
1、sizeof(数组名),计算的就是整个数组的大小
2、&数组名,取出来的是整个数组的地址
3、数组名作为参数传递的时候,数组名就是数组的首元素地址
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, sz);
数组名作为实参进行传参的时候,传递的实际上数组的首元素地址
printf("%p\n", arr);//光一个地址名,取到的是首元素的地址
printf("%p\n", &arr);//在地址名前面加一个取地址符&,取到的是整个数组的地址
printf("%p\n", arr+1);
printf("%p\n", &arr+1);
printf("%p\n", &arr[0]);
printf("%d\n",*arr);
return 0;
}
二维数组(行可以不写,列一定要写)
①int arr[2][3]; ----->(两行三列的数组) char arr[3][5]; --->(三行五列)
②初始化
int arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} ---->arr[0]={1,2,3,4}
arr[1]={5,6,7,8}
arr[2]={9,10,11,12}
int arr[3][4]={1,2,3,4,5,6,7,8} ---->arr[0]={1,2,3,4}
arr[1]={5,6,7,8}
arr[2]={0,0,0,0}
int arr[3][4]={{1,2},{3,4},{5,6}} ---->arr[0]={1,2,0,0}
(里面的每一个大括号就表示一行) arr[1]={3,4,0,0}
arr[2]={5,6,0,0}
③二维数组在内存中的存储
//转义字符
//定义:将原有的字符的意思转变成其他内容
\' :用于表示字符常量',
\":用于表示字符常量",
\\:用于表示字符常量\
\a:警告字符,蜂鸣-->无人机--蜂鸣--不同的响法--告诉我是哪里出了问题
\b:退格符
\f:进制符
\n:换行符
\r:回车
\t:水平制表符
\v:垂直制表符
\ddd:表示1-3个八进制的数字 \130--->X
\xdd:表示2个十六进制数字
///
//给每一个字符一个编号,
//编号叫什么(ASCII码)(课本p349)
X--88(十进制)130(八进制)58(十六进制)
A--65(十进制)101(八进制)41(十六进制)
a--97(十进制)141(八进制)61(十六进制)
1--49(十进制)61(八进制)31(十六进制)
//注释方法:
①://asdfasdfadfasdf
②:/**/
作用:①不需要的代码直接注释
②让别人或者自己看懂,记得代码的意思