C语言程序设计笔记

千里之行始于足下,九层宝塔起于垒土 C不够扎实,重新开练,过程中觉得需要注意的一些笔记

1.正数的原码,反码,补码都是一样的!

2.逻辑运算
细则1:只要有一个运算对象是浮点型,则表达式为浮点型,运算对象为整形,表达式也为整形
例如:

float a=0,c=0;
a=5/2;
printf("%f\n",a);

打印结果为2
而不是2.5

解决方案 其中一个运算对象改为浮点型,输出表达式为浮点型
细则2:%求余运算符的两个运算对象必须都是整数,表达式结果的正负由被除数决定

在这里插入图片描述

细则3:自增自减运算符
a++;
先读后写
先把a读取出来再进行算术运算
即:
printf(“d%\n”,a);
a=a+1;

++a;
先写后读
先把a进行算术运算后再读取
即:
a=a+1;
printf(“d%\n”,a);

细则4 赋值运算符
在这里插入图片描述
细则5:sizeof(表达式)
结果为表达式的数据类型占据的字节长数
细则6:不同类型的数据混合运算,计算机为保证运算精度,会自动转换为高精度的数据类型
例如:
char一定会转换为int
float一定会转换为double
在这里插入图片描述
3.算法
细则1:输入参数
scanf(“%d%d”,&a,&b);
细则2:求取奇数偶数
if(a%2!0)
{}
细则3:常用语句
if(表达式){}
if(表达式){} else(表达式){}
if(表达式){} else if(表达式)else(表达式){}
switch(表达式)
{case 常量表达式1:语句1;break;
case 常量表达式1:语句1;break;
defalt:语句
}

释义:
1.如果if表达式为真执行if内容
2.如果if表达式为真执行if内容,为假执行else内容
3.如果if表达式为真执行if内容,为假判断else if
表达式为真执行else if内容,都为假执行else
内容(多选一)
4.switch表达式中与任一case表达式为真即执行case内容,都为假执行defalt内容
注意{
常量表达式(指固定值)
break语句(打断跳出switch)
switch表达式不能是浮点型,必须为却确定值
}
4.一维数组
细则1:数组长度必须为整形常量表达式,可以在宏定义中预编译表达式,在数组中引用宏定义
细则2:未赋值的数组,内容为未知
例:
int arr[5]; arr[0]=?;arr[1]=?…
细则3:部分赋值,剩余未赋值部分内容为0
int arr[5={0};]; arr[0]=0;arr[1]=0…
细则4:使用sizeof()获取长度
细则5:获取数组长度(总字节数/sizeof(类型))
例:
int arr[5]={0};
printf(“长度:%d\n”,sizeof(arr)/sizeof(arr[0]))

5.二维数组
细则1:二维数组占用多个连续的内存空间,相当于一维数组的连续
例:
在这里插入图片描述
细则2:总字节数=sizeof(数组类型)*行数 列数
细则3:计算元素在数组中位置的公式
例 a[ 1 ][ 2 ] 是在数组中的第 1
3+2=第5位
6.一维数组

7.二维数组

8.结构体
细则1:

struct student
{
int num;
int c_score;
int ps_score;
float avg;
};
struct student //类型名
struct student Tom;//变量名称,将student结构体赋值变量名称
结构体成员不能赋初值
赋初值的方法 1.struct student Tom={10,90,98,94.5};
2.Tom.num=10;
细则2:
声明类型的同时,定义变量
例1
struct student
{
int num;
int c_score;
int ps_score;
float avg;
};
//struct student //类型名
//struct student Tom;//Tom变量
//struct student Tom = {10};//结构体赋初值,类似数组赋值
//在定义结构体变量后,
//可以使用 Tom.num = 10;对结构体成员进行赋值
例2
struct student
{
int num;
int c_score;
int ps_score;
float avg;
}Tom;//Tom是结构体变量
(声明的同时定义变量,相当于struct student Tom;)
例3
struct student
{
int num;
int c_score;
int ps_score;
float avg;
}Tom;Jary;//Tom、Jary都是结构体变量
(声明的同时定义变量,相当于struct student Tom;)
细则3:
占据内存空间的是变量
细则4:
省略结构体名,直接定义结构体变量
struct //student(此方法只能定义一次,接下来不能再定义结构体变量)
{
int num;
int c_score;
int ps_score;
float avg;
}Tom;Jary;//Tom、Jary都是结构体变量
细则5:
结构体数组赋值
struct student
{
int num;
int c_score[2];
int ps_score;
}Tom;Jary;//Tom、Jary都是结构体变量
赋值:
struct student Tom = {10,{20,30,40},50};//防止数组漏掉
struct student Jary= {10,20,30,40,50};

8.typedef
给已有的 类型 取别名
typedef signed char int8;
//signed char a 相当于 int8 a;
细则2:
typedef 结构体的使用
例1
typedef struct student
{
int num;
int c_score[2];
int ps_score;
}STU;//加入typedef 后,这里的STU不再是结构体变量
//而是结构体struct student的别名
STU Tom={10,{20,30,40},50}//相当于struct student Tom

细则3
&为取地址符//传送到目标地址

9.结构体数组
定义方法1
struct student
{
int num;
int c_score[];
int ps_score;
};//定义结构体
struct student class1[5];

定义方法2
struct student
{
int num;
int c_score[];
int ps_score;
}; class1[5];//class1是结构体数组名/表示有6个struct student类型的结构体

初始化方法
struct student class1[2] = { {10,{20,30,40},50},{10,{20,30,40},50},{10,{20,30,40},50}};//初始化3个结构体的成员初值

结构体数组使用
例1
要求,找出N个学生中的最高成绩,并输出该学生信息
typedef struct student
{
int num;
int score;
}STU;//STU是结构体的别名
STU class1[n]={ {10,90},{20,70},{30,95}};
int i =0;
int max=0;
for(i=1;i<n;i++)
{
if(class1[i].score > class1[max].score) max=i;//筛选最高分
}
print(“成绩最高的学生:\n”)
print(“序号:%d\n”,class1[max].num);
print(“序号:%d\n”,class1[max].score);

time:2021/11/24

9.作用域与变量
细则1:
文件作用域(全局变量):覆盖文件头到尾
函数作用域(局部变量):参数与函数体属于函数作用域,返回值函数名属于文件作用域
细则2:
符合语句块:{},属于语句块作用域
细则3:
1.不同作用域不会冲突
2.同一作用域作用就近
细则4:
extern 扩展作用域:文件作用域标识符可以通过其扩展作用域

10.存储内别
细则1:
栈变量:auto修饰(默认省略)->99%的局部变量
static修饰的局部变量会在编译时直接开辟内存块->1%的局部变量
销毁内存块:函数执行完毕后会归还内存
细则2;
变量声明->开辟内存块
超出作用域的范围->其实是作用域执行完后销毁了局部变量的内存空间
细则3:
全局变量(静态变量):用static声明
内存开辟时间:编译时
内存销毁时间:主函数结束时
细则4
形参不能声明static,只能作为auto修饰的局部变量
细则5
变量不赋值默认0
细则6
全局标识符(宏/变量/函数)用static修饰,并不是表示全局区,而是表示该标识符只能在本文件内被扩展使用

拓展:标识符命名规则:
宏名称->全大写,
变量名->单个单词均小写,多个单词首单词小写,其后每个单词首字母大写
函数名->单个单词均大写,多个单词每个单词首字母大写

11.指针
细则1
指针即地址
&取地址符号(printf(“%p\n”,&a);->取出a在内存中的地址位置)
其中a的地址为常量,变量地址为常量不可修改变换

12.指针变量
细则1

  • *a // * 指针运算符

time:2021/11/25
参考自
https://www.bilibili.com/video/BV1iz4y1S7NK?p=11

猜你喜欢

转载自blog.csdn.net/weixin_49048045/article/details/121235076