C语言作为大多编程学习者所接触的第一个语言,是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
Hello World 代码
Hello World !一般也是我们所接触的第一个C语言程序。
#include<stdio.h> //标准输入输出头文件
int main()
{
printf("Hello World!\n");
return 0;
}
其中,#include<stdio.h>是头文件,意为标准输入输出;
main函数是程序的入口,且一个源文件只能有一个主函数;
若将 int 改为 void,则是不需要返回值的,则需要删掉 return 0。
system(“pause”);
是暂停的意思,等待用户信号;不然控台程序会一闪即过,你来不及看到执行结果。
system 是C函数库 stdlib.h、process.h 中的一个函数。必须写#include <stdlib.h>
头文件。用Ctrl+F5可以代替 system(“pause”);
数据类型
内置类型:
类型 | 释义 |
---|---|
char | 字符数据类型 |
int | 整形 |
short | 短整型 |
long | 长整型 |
long long | 更长的整形 |
float | 单精度浮点数 |
double | 双精度浮点数 |
bool | 布尔类型 |
void | 无类型 |
自定义类型:
struct enum union…
类型是为了申请内存空间,各类型开辟空间的大小也是不一样的。
操作数的存储大小由操作数的类型决定。//F10和F11 调试的快捷键
sizeof 操作符 以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。
#include<stdio.h>
void main()
{
printf("%d\n", sizeof(char)); // 1
printf("%d\n", sizeof(int)); // 4
printf("%d\n", sizeof(short)); // 2
printf("%d\n", sizeof(long)); // 4
printf("%d\n", sizeof(long long)); // 8
printf("%d\n", sizeof(float)); // 4
printf("%d\n", sizeof(double)); // 8
printf("%d\n", sizeof(bool)); // 1
}
类型的使用:
未初始化:
int a;
初始化:
int a;
a = 100;//赋值
//int a = 100;
char ch = 'A';
int age = 20;
字节、字、bit、byte的关系
字 word
字节 byte
位 bit
字长是指字的长度
1字节 = 8位(1 byte = 8bit)
1字 = 2字节(1 word = 2 byte)
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 P = 1024 T
- 程序员日 为:10月24日
变量、常量
不变的值,C语言中用常量的概念来表示;变化的值,C语言中用变量来表示。
定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = ‘A’;
变量的使用
#include <stdio.h>
void main()
{
int a = 10;
printf("%d\n", a);
printf("%d\n", &a); //地址0x
}
scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。
#include <stdio.h>
void main()
{
int a, b;
printf("imput a and b :");
scanf("%d %d",&a, &b); //“%d %d” 所以输入a与b的值时中间用空格隔开
int sum = a + b;
printf("sum = %d\n", sum);
}
//结果为:
imput a and b :10 20
sum = 30
scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。
变量的分类
局部变量
全局变量
#include <stdio.h>
void main()
{
int a = 10;
//语句块
{
int b = 20;
printf("a = %d\n", a);
printf("a = %d\n", b);
}
printf("a = %d\n", a);
printf("a = %d\n", b); //错误
}
其中,a 为全局变量,在整个主函数范围内均可访问到;而 b 为局部变量,只能在变量所在的局部范围内访问到。(作用域)
- 当局部变量和全局变量同名的时候,局部变量优先使用。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
字符串+转义字符+注释
字符串
由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注:
字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
C语言没有字符串类型。
#include <stdio.h>
void main()
{
char *str = "Hello World.";
printf("str = %s\n", str);
char str1[] = "Hello World.";
printf("str1 = %s\n", str1);
char str2[] = { 'a', 'b', 'c' };
printf("str2 = %s\n", str2);
char str3[] = { 'a', 'b', 'c', '\0' }; // '\0'可以让字符结尾
printf("str3 = %s\n", str3);
char str4[] = { 'a', 'b', '\0','c' };
printf("str4 = %s\n", str4);
//结果为:
str = Hello World.
str1 = Hello World.
str2 = abc烫烫烫烫蘃ello World. //无 \0 时会出现随机字符
str3 = abc
str4 = ab
转义字符
如果在屏幕上打印一个目录: D:\code\test.c
若代码为:
#include <stdio.h>
int main()
{
printf("D:\code\test.c\n");
return 0;
}
//结果为:
D:code est.c
可以看出,与想要的不符。
那正确的代码应该是:
#include <stdio.h>
int main()
{
printf("D:\\code\\test.c\n");
return 0;
}
//结果为:
D:\code\test.c
转义字符 | 释义 |
---|---|
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\’ | 用于表示字符常量’ |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符。 |
\a | 警告字符(响铃符) |
\b | 退格符 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 如: \130 X |
\xdd | dd表示2个十六进制数字。 如: \x30 0 |
#include<stdio.h>
#include<string.h>
int main()
{
printf("%d\n", strlen("abcdef")); //长度不包含\0
printf("%d\n", sizeof("abcdef")); //大小包含\0
// \32被解析成一个转义字符
printf("%d\n", strlen("c:\test\328\test.c"));
return 0;
}
//结果为:
6
7
14
strlen 需要 #include<string.h> 头文件。
注释
- 代码中有不需要的代码可以直接删除,也可以注释掉
- 代码中有些代码比较难懂,可以加一下注释文字
注释有两种风格:
- C语言风格的注释 /xxxxxx/
缺陷:不能嵌套注释 - C++风格的注释 // xxxxxxxx
可以注释一行也可以注释多行