前言:我自己学习C语言也有一小段时间了,却最近才了解到博客这个东西(居然以前注册了一个账号),同时也是在视频老师的课程里知道了,在上课学习之后写一篇总结博客对知识巩固十分有好处。下面就是我整理往期的学习记录和笔记,在巩固自身的同时也希望能够帮助到其他初学的朋友们。话不多说,正文开始!
基本语法结构:
#include <stdio.h>-----包含(include)一个叫stdio.h的文件
int main()-----有且只有一个main函数
{
...------在这里完成任务
return 0;-----返回0
}
相关注解:
main:主函数---程序入口 int:整型 int main:main函数调用后返回一个整型值
//:表注释,后面的内容不会被计算机执行
\n:表示换行,会让光标跳到下一行
Ctrl+Fn+f5运行程序
-
库函数
printf()-----print function 打印函数(格式化输出函数)
它是一个库函数,即存放在函数库中的函数。简单来说就是C语言自身提供的函数,提供的函数自然不是你的,不是你的东西我们就要去引用、包含(include)一下。而printf函数则是包含在一个叫做stdio.h的头文件中。
我们这样去引用它 #include <stdio.h>
stdio.h---standard input output.header---标准输入输出头文件(在使用标准输入、输出函数是需要引用stdio.h该头文件)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
数据类型
数据类型
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点型
double //双精度浮点型
说明符① (该符号表示在文章结尾有对应注释)
%d---打印整型
%c---打印字符
%f---打印浮点数(打印小数)
%lf---打印双精度浮点数
%p---打印地址
%s---打印字符串
%x---打印十六进制数字
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
char:
应用:打印一个字母A
#include <sdtio.h>
int main()
{
char ch = 'A';//向内存申请一块空间叫ch的空间用来存放A;字符要用单引号引住:'A'
printf("%c\n",ch);//直接记住这个打印的格式,这就是这个函数的使用方法
//""以内的东西会被打印出来,打印什么呢,打印的是ch里面的内容,这个内容会替换掉%c
return 0;
}
运行结果:A
-- -- -- -- -- -- -- -- -- --
int:
应用:打印年龄
#include <stdio.h>
int main()
{
int age = 20;
printf("%d\n",age);//%d————打印整型十进制数据
return 0;
}
运行结果:20
-- -- -- -- -- -- -- -- -- --
float、double:
应用:打印小数
#include <stdio.h>
int main()
{
float f = 5.0;
printf("%f\n",f);
return 0;
}
#include <stdio.h>
int main()
{
double d = 3.14;
printf("%lf\n",d);
return 0;
}
运行结果:5.0
运行结果:3.14
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --
计算类型创建的变量向内存申请的空间
#include <stdio.h>
int main()
{
printf("%d\n",sizeof(char));//sizeof——可计算大小,是一个关键字
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(long long));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));
return 0;
}
运行结果:
1
2
4
4
8
4
8
这些表示的是变量的大小,单位是字节②。即char类型的变量大小是一个字节,short类型的变量大小是两个字节,int是四个字节,以此类推。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
变量、常量
变量
先看例子:
int age = 20;
float weight = 45.5f;
char ch = 'w';
即:类型+变量名+赋一个值
-- -- -- -- -- -- -- -- -- --
全局变量、局部变量
#include <stdio.h>
int num2=20;//全局变量————定义在代码块({})之外的变量————int global
int main()
{
int num1 = 10;//局部变量————定义在代码块({})内部的变量————int local
return 0;
}
-- -- -- -- -- -- -- -- -- --
#include <stdio.h>
int a =100;
int main()
{
int a = 10;
printf("%d\n",a);
return 0;
}
运行结果:10
结论:
-
局部变量和全局变量的名字建议不要相同,容易误会,产生bug
-
当局部变量和全局变量名字相同时,局部变量优先
-- -- -- -- -- -- -- -- -- -- -- -- -- -- --
变量的作用域和生命周期
作用域
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效的/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。(哪里可以用,哪里就是这个变量的作用域)
局部变量的作用域是所在的局部范围
全局变量的作用域是整个工程
#include <stdio.h>
int main()
{
{
int num = 0;
}
printf("num=%d\n",num);//这个变量定义在内部大括号内,所以它(num)的作用域就是它所在的大括号,此时输出会报错
return 0;
}
下面这两种写法可运行
#include <stdio.h>
int main()
{
{
int num = 0;
printf("num=%d\n",num);
}
return 0;
}
#include <stdio.h>
int main()
{
int num = 0;
{
printf("num=%d\n",num);
}
return 0;
}
生命周期
变量的生命周期指的是变量创建到变量销毁之间的一个时间段
-
局部变量:进入作用域生命周期开始,出作用域生命周期结束
-
全局变量:整个程序的生命周期
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
常量
字面常量
#include <stdio.h>
int main()
{
3;//字面常量
4;
return 0;
}
-- -- -- -- -- -- -- -- -- --
const修饰的常变量
#include <stdio.h>
int mian()
{
const int num = 4;//const————常属性————带有常量的属性,const修饰的常变量(num)本质还是变量
return 0;
}
-- -- -- -- -- -- -- -- -- --
#define定义的标识符常量
#include <stdio.h>
#define MAX 10
//把10定义成MAX,以后输入MAX就等于10
int main()
{
int arr[MAX] = {0};//int arr[]=...是数组,方括号中只能填常量,不能把上面学的常变量放进去
//数组内容后面再详说
printf("%d\n",MAX);
return 0;
}
运行结果:10
-- -- -- -- -- -- -- -- -- --
枚举常量
枚举:一一列举
#include <stdio.h>
enum Sex
{
MALE,
FEMALE,
SECRET
}://MALE,FEMALE,SECRET————枚举常量
int main()
{
printf("%d\n",MALE);//0
每个枚举常量对应一个整型数字,枚举常量的值默认从0开始
printf("%d\n",FEMALE);//1
printf("%d\n",SECRET);//2
return 0;
}
运行结果:
0
1
2
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
附
①更加详细的说明符介绍
说明符(specifier) | 对应数据类型 | 描述 |
d / i | int | 输出类型为有符号的十进制整数,i 是老式写法 |
o | unsigned int | 输出类型为无符号八进制整数(没有前导 0) |
u | unsigned int | 输出类型为无符号十进制整数 |
x / X | unsigned int | 输出类型为无符号十六进制整数,x 对应的是 abcdef,X 对应的是 ABCDEF(没有前导 0x 或者 0X) |
f / lf | double | 输出类型为十进制表示的浮点数,默认精度为6(lf 在 C99 开始加入标准,意思和 f 相同) |
e / E | double | 输出类型为科学计数法表示的数,此处 "e" 的大小写代表在输出时用的 “e” 的大小写,默认浮点数精度为6 |
g | double | 根据数值不同自动选择 %f 或 %e,%e 格式在指数小于-4或指数大于等于精度时用使用 |
G | double | 根据数值不同自动选择 %f 或 %E,%E 格式在指数小于-4或指数大于等于精度时用使用 |
c | char | |
s | char * | 输出类型为字符串。输出字符串中的字符直至遇到字符串中的空字符(字符串以 '\0‘ 结尾,这个 '\0' 即空字符)或者已打印了由精度指定的字符数 |
p | void * | 以16进制形式输出指针 |
% | 不转换参数 | 不进行转换,输出字符‘%’(百分号)本身 |
n | int * | 到此字符之前为止,一共输出的字符个数,不输出文本 |
②计算机最小的单位叫bit(比特位),8个比特位就是一个byte(字节),1024个字节就是kb(千字节)
bit——比特位
byte——字节(8个bit)
kb——千字节(1024个byte)
mb——兆字节(1024个kb,以此内推)
gb——千兆字节,吉字节
tb——万亿字节,太字节
pb——千万亿字节,拍字节
eb——百亿亿字节,艾字节
zb——十万亿亿字节,泽字节
yb——一亿亿亿字节,尧(yao)字节
bb——一千亿亿亿字节,珀(bo)字节
nb——一百万亿亿亿字节,诺字节
db——十亿亿亿亿字节,刀字节
到这里本次的博客就结束了,希望我的文章能够给一起学习的朋友一点帮助。由于是第一次写,不足之处还望读者海涵,若在阅读中发现有问题或者严重错误的地方还望告知,我会认真学习并及时修改更正,谢谢。