- 一维数组
- 二维数组
- 指针
- 二维数组
- 函数指针
- 数组指针和二级指针
- sizeof和strlen的区别
- 各种类型变量的字节大小
- 算数运算符
- 关系运算符
- 逻辑运算符
- 运算符的优先级和结合性
- 条件运算符
数组地址是连续的,数组名是数组的地址
- 数组定义方式:
int array[100];//没有初始化,仅仅申请了100个整形数的内存空间,大小为100*4个字节,数组中一个元素的大小是一个整形数的大小,即4个字节
int array[3] = {1,2,3};//完整初始化了数组,申请了三个整形数内存空间,并赋值三个数1、2、3
int array[100] = {1,2,3};//不完整初始化数组,申请了100个整形数内存空间,但只赋值三个数,放在数组前三个位置
- 冒泡排序
从小到大排序12、1、15、9
#includeint main() { int array[4] = {12,1,15,9}; int size = sizeof(array)/sizeof(array[0]); int i = 0; int j = 0; int temp = 0; for(i = 0;i for(j = 0;j if(array[j]>array[j+1])//从大到小排序则用< { temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } printf("从小到大排序:n"); for(i = 0;i printf(" %d",array[i]); } putchar('n'); return 0; }
输出结果:
- 数组传参
#include二维数组void printfArr(int arry[10])//形参中不存在数组的概念,即便中括号约定了数组的大小,也无效,传递的是数组的首地址,大小是8个字节,形参可以为array[] { printf( "printfArr:%dn",sizeof(arry)); } int main() { int array[4] = {12,1,15,9}; printf("main:%ldn",sizeof(array)); printfArr(array); return 0; }
定义方式:
int array[2][3] = {{12,33,44},{33,323,43}};//分行给数组元素赋值
int array[2][2] = {1,2,3,4};//可以将所有数据写在一个大括号内,按照数组元素排列顺序对元素赋值。
int array[][3] = {1,2,3,4,5,6};//在为所有元素赋初值时,可以省略行下标,但是不能省略列下标。
指针
- 数组名是数组首地址,是指针常量,不可以做偏移操作
#includeint main() { int array[3] = {1,2,3}; int *p = array; for(int i = 0;i<3;i++){ printf("%dn",*(array++)); } return 0; }
- 指针变量可以做偏移操作
#include二维数组int main() { int array[3] = {1,2,3}; int *p = array; for(int i = 0;i<3;i++){ printf("%dn",*p++); } return 0; }
*a = a[0]
*(a+1) = a[1]
strlen(char*)函数求的是字符串的实际长度,直到遇到第一个’ ’,然后就返回计数值,且不包括’ ’,而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。
sizeof是操作符,strlen是函数。
#include各种类型变量的字节大小 算数运算符#include int main() { int a[10] = {0};//数组长度为10 int size1 = sizeof(a); int size2 = strlen(a); printf("%dn",size1); printf("%dn",size2); system("pause"); return 0; }
- 算术运算符的优先级
在进行表达式求值时,通常会按照运算符的优先级别从高到低依次执行。在算术运算符中,、/、%的优先级别高于+、-的级别。例如,如果在表达式中同时出现和+,那么应先运算乘法:
R=x+y*z;
在上述表达式中,因为比+的优先级高,所以会先进行yz的运算,最后加上x。
- 算术运算符的结合性
当算术运算符的优先级相同时,结合方向为“自左向右”。例如:
a-b+c
因为减法和加法的优先级是相同的,所以b先与减号相结合,执行a-b的操作,然后执行加c的操作,这样的操作过程就称为“自左向右的结合性”。
关系运算符
关系运算符的结合性都是自左向右的。
条件运算符是C语言中唯一的一个三目运算符,其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。
表达式1 ? 表达式2 : 表达式3
max = (a>b) ? a : b;等价于下面if else语句
if(a>b){
max = a;
}else{
max = b;
}



