整形变量修饰符
改变整形变量的存储空间
short int a=4
short 2字节 %hd
int 4字节 %d
long 8字节 %ld
long long 8字节 %lld
整形变量修饰符
给不整形变量占用的存储空间
int short long longlong
改变一个数的符号
signed unsigned
下面没懂
——————————————————————
改变一个数的符号:表示原来最高位用作表示一个数的正负,现在用来参与计算
计算机默认的是一个有符号数
无符号数用%u输出
————————————————————
char类型数据存储
sizeof
单目运算符,用一个 以 字节形式给出了其操作数的存储大小
————————————————————————————
【了解】数组的概念和分类
把具有 相同类型的若干 变量按 有序的形式组织起来的 集合
数组是构造类型,数组元素可以是基本数据类型,或构造类型
数组的下标
数组的维数
2.按存储的内容分类,如下四类
数值数组: 存储数值
字符数组:存放字符‘a‘
指针数组:存放指针(地址)
结构数组:存放结构体类型的数据
3.按维度分类
一维数组
二维数组
三维数组
【掌握】一维数组定义及注意事项
1.一维数组介绍 :存储基本数据类型int char float
2.一维数组的定义:
数组的使用流程:定义数组---》给数组初始化---》使用数组
格式如下:
类型说明符 数组名【常量表达式(数组的 长度)】
数组类型 数组名【数组长度】
一维数组:数组的没个元素都不是一个数组
int a[3]//这个数组只能存放3个 int类型的数据,只能存放int类型的数据
注意事项
1)数组长度可以是一个常量,也可以是常量表达式:int a1[3+3]
3)数组名不能跟其他变量同名
4)数组长度不可以为变量(C标准要求)
5)数组的长度可以使用宏定义
6)定义数组的时候,还可以定义普通变量: int x,y,a7[4]
【掌握】一维数组的初始化:给数组的每一个元素赋一个初始值
1.一维数组的初始化
2.定义的同时初始化: 类型说明符 数组名【常量表达式】{值1,值2,。。。 };
(1)定义的同时完全初始化
int a[3] = {1,2,3};
int a2[] = {233,23,35};//数组的长度根据后面大括号中值的个数决定
(2)定义的同时进行部分初始化
int a1[3] = {1,2};//第三个元素是0
int a4[10]={ [3]=23,[8]=34};//[3]表示下标为3的元素赋初值为23
3.先定义数组,然后再初始化
int a5[4];//先定义一个数组,通过下标法进行初始化
a5[0] = 12//给数组的第一个元素赋值为12
a5[1] = 34
//如果数组没有初始化,是有值的,值是随机的垃圾值
//如果进行部分初始化,数组中其他元素都是0
————————————————————————
一维数组的引用方式
变量代表内存中的空间
数组元素也是变量
下标:数组元素的编号【0,n-1】
数组的引用(访问):数组名【下标】
数组的遍历
特别强调:使用先定义后初始化的方式,如果部分元素被初始化了,系统不会对没有初始化的那部分元素赋值0操作
【掌握】一维数组的存储方式
存储方式:
1)计算机给数组分配一块 连续的存储空间
2)数组名代表数组的首地址,从首地址位置,依次存入数组的第1,2,3,n个元素
3)每个元素占用相同的字节数(取决于数组类型)
4)元素之间的地址是连续的
内存的地址是十六进制的 0X开头
【掌握】一维数组的地址 %p
数组内部的元素是连续的
先定义的数组分配在高地址
数组名代表了数组的首地址==第一个元素的地址
必须记住: 数组名是一个常量(固定不允许修改),存储的就是数组的首地址
——————————————————————————————
【掌握】一维数组长度计算方法
数组长度计算方法,超级重要
#include <stdio.h>
int main(int argc, const char * argv[]){
int a1[]{1,2,4,5,6,3,3,3};
int len = sizeof(a1)/sizeof(int);
printf("len = %d\n",len);
return 0;
}
——————————————————————————————————————
【掌握】一维数组的越界问题
访问了不该访问的空间
非常危险,程序会崩溃
int main(int argc, const char * argv[]){
char a[2]={‘h‘,‘i‘};
printf("a[0] = %c\n",a[0]);
printf("a[1] = %c\n",a[1]);
a[2]= ‘s‘;
printf("a[2] = %c\n",a[2]);
return 0;
}
————————————————————————————
数组元素作为函数参数
把实参数组元素的值传递给形参, 值传递
【掌握】数组名作为函数参数
1. 实参的类型和形参的类型不匹配--错误
2.数组的长度可以不同
3形参数组的长度可以不写
4.数组名作为函数参数后,数组的长度信息丢失的问题。为啥固定为8?C 语言规定,不管什么类型的数据,数据的内存地址在内存中占8字节
地址占8个字节
————————————————————————————————————————
[掌握】冒泡排序,必考题目,必须掌握
一种排序算法,大数下沉,小数上浮
步骤(大数下沉)
1)比较相邻的元素