- 文章内的内容是复习时针对之前没有整理到的内容的补充,如有错误或不详,敬请指出。
学习重点
- 流程控制
- 函数
- 指针
- 静态内存和动态内存
内存的分配与释放
- 分配内存
- 操作系统为程序分配一块内存空间,程序具有对这块内存的读写权限
- 释放内存
- 操作系统收回为程序分配的内存空间,并不会清理内存中的数据,只收回程序对该存储空间的读写权限
变量初始化
- 变量必须初始化
- 不初始化,会使用垃圾数据填充,可能会导致计算结果有误
- 系统如何执行
int i = 5;
- 软件请求为变量i分配存储空间,该存储空间用于存放i变量
- 之后对变量i的操作即对这块存储空间进行读写操作
- 将数值5存放在分配给变量i的存储空间中
数据基本类型及输出
- 基本类型
int
、long int
、short int
、char
、float
、double
- printf对不同数据类型的输出
int
或short int
⇨%d
long int
⇨%ld
char
⇨%c
float
⇨%f
double
⇨%lf
%p
:对变量的地址进行输出%e
:以科学计数法输出
- 字符串的输出
%s
- 以八进制数输出
%o
- 以十六进制输出
%x
或%#X
- printf输出
%m.nf
:表示输出double类型的数据时,总共占 m 个字符,保留 n 位小数- 如果输出的结果不够 m 位,则用空格补充,m 为负数表示把空格补充在数值后面
- char对字符的处理
- 大写字母加32可以得到它的小写字母
- 小写字母减32可以得到它的大写字母
putchar()
:输出字符变量getchar()
:从键盘输入字符变量
例:
# include <stdio.h>
int main(void)
{
int a;
printf("请输入一个大写字母:");
a = getchar();
a = a + 32;
putchar(a);
putchar('
');
return 0;
}
/*运行结果*/
请输入一个大写字母:Q
q
Press any key to continue
- 强制数据类型转换
(数据类型)(表达式)
:强制将表达式的计算结果转换为前面的数据类型- 可以用于计算输出一个数的每个位上的数值
函数与指针
- 函数的优点
- 避免重复操作
- 有利于程序的模块化
- 指针,地址,指针变量
- 指针和地址是相同的,表示内存单元的编号
- 指针变量是存放内存单元编号的变量
static
作用- 可用作函数和变量的前缀,用于隐藏函数
- 对于变量
- 保持变量内容的持久,全局变量和static变量存储在静态存储区,静态存储区的变量只会在程序运行时完成初始化,也是唯一的一次初始化
- 默认初始化为0
例:
/*static用法*/
# include <stdio.h>
int func(int a, int b);
int main(void)
{
int k = 4,m = 1, p;
p = func(k, m); //8
printf("p1 = %d
", p);
p = func(k, m);
printf("p2 = %d
", p);
p = func(k, m);
printf("p3 = %d
", p);
return 0;
}
int func(int a, int b )
{
static int m = 0, i = 2;
/*
static只有在第一次执行的时会初始化变量
函数结束后,变量不会被释放
下一次被调用时,变量不会被重新赋值,而是使用之前的值
*/
printf("m = %d ", m);
printf("i = %d
", i);
i += m + 1; //2+0+1=3 3+8+1=12 12+17+1=30
m = i + a + b; //3+4+1=8 12+4+1=17 30+4+1=35
return (m);
}
- 在func函数中,m和i只有第一执行时被赋值,之后再被调用时,使用的是之前的值
/*运行结果*/
m = 0, i = 2
p1 = 8
m = 8, i = 3
p2 = 17
m = 17, i = 12
p3 = 35
Press any key to continue
静态内存与动态内存
- 静态内存和动态变内存
- 相同点:都需要分配内存空间
- 不同点:
- 静态内存是系统自动分配的,自动释放,不能手动释放,存储空间的分配是在栈中分配,函数终止后,分配给该变量的存储空间会被释放
- 动态内存是手动分配的,手动释放,可以在程序运行的过程中手动分配和释放,存储空间实在堆中分配的
数学公式
- ex、log等数学运算
- 前提:程序要写
# include <math.h>
这个头文件
函数 | 功能 | 使用方法 | 函数 | 功能 | 使用方法 |
---|---|---|---|---|---|
abs | 求整数 x 的绝对值 | int x; abs(x); | exp | 求ex | double x; exp(x); |
fabs | 求整数 x 的绝对值 | int x; abs(x); | pow | 求xy | double x, y; pow(x, y); |
sin | 求 sinx 的值 | double x; sin(x); | sqrt | 求 x sqrt{x} x | double x; sqrt(x); |
cos | 求 cosx 的值 | double x; cos(x); | log | 求Inx | double x; log(x); |
tan | 求 tanx 的值 | double x; tan(x); | log10 | 求lgx | double x; log10(x); |
以上内容均属原创,如有不详或错误,敬请指出。
本文链接: https://blog.csdn.net/qq_45668124/article/details/115493224
版权声明: 本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0 许可协议。转载请联系作者注明出处并附带本文链接!