目录
1.什么是C语言?
计算机语言:人和计算机交流的语言 C/C++/JAVA/python/GO
C语言是一门通用的计算机编程语言 广泛用于底层软件开发
C语言标准:美国国家标准局 制定ANSI C----C89,C90,C99,C11(最新标准)
计算机语言:识别二进制语言 使用困难1010001011
----> 汇编语言 助记符 ADD 000000111 ----> B语言 ----> C语言
2.怎么写C语言代码?
工具:编译器 Devc Vc VS2019 ...
以VS2013为例
①创建项目 ②创建源文件 ③写代码 ④编译 运行
3.从第一个C语言程序开始:
//一个工程中可有多个.c文件 但只可有且仅有一个main函数
4.初识数据类型:
小数---浮点数 整数---整形
//上述输出为字节 C语言标准:sizeof(int) >= sizeof(long)
计算机中的单位:
bit --比特位 一个比特位存放一个二进制数
byte --字节 =8 bit
--> kb --> mb --> gb --> tb --> pb 1024为一阶
5.初识变量/常量类型
变量 -- 可以改变的量
作用域与生命周期:
局部变量的作用域:就是变量所在的局部范围
全局变量的作用域:整个工程 extern int//声明一下
生命周期:变量的创建和销毁之间的时间段
常量 -- 不能改变的量
①字面常量 3.14 ②const修饰的常变量 ③#define 定义的标识符常量 ④枚举常量
#define MAX = 1;//define定义的标识符常量
enum Sex//枚举常量 第一个默认从0开始 也可赋初值来改变默认
{
MALE,
FEMALE,
SECRET
};
int main()
{
const int num = 1;//常变量---本质属性是变量
printf("%d\n", num);
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
return 0;
}
6.scanf函数报错问题
scanf_s函数 --VS编译提供的 不是C语言标准规定的
解决办法:
#define _CRT_SECURE_NO_WARNINGS 1
加入到第一行中
7.初识字符串
由双引号引起来的一串字符称为字符串字面值
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] ="abc";
char arr2[] = { 'a','b','c'};
// 字符数组--一组相同类型的元素
//"abc"--'a’ 'b' 'c' '\0'
//字符串的结束标志是\0
//数据在计算机上存储的时候 以2进制的方式
// ASCII编码 a--97 A--65 ASCII码值
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%d\n", strlen(arr1));//strlen -string length--3
printf("%d\n", strlen(arr2));// 计算字符串长度的函数--15
//strlen库函数---#include <string.h>
return 0;
}
8.转义字符与注释
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量' |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 如: \130 X |
\xdd | dd表示2个十六进制数字。 如: \x30 0 |
int main()
{
printf("c:\test\32\test.c\n");// 水平制表符 Tab1\t
printf("c:\\test\\32\\test.c");
printf("(are you ok??)");//??) --- ] --三字母词
printf("%c\n", '\'');
printf("%d\n", strlen("c:\test\32\test.c"));//13
// \t 转义字符算一个字符
// \32-- 32是2个8进制数字,作为ASCII码值对应的字符
// 32 --> 10进制 26--> 作为ASCII码值对应的字符
printf("%c\n", '\32');
printf("%c\n", '\132');
// \xdd 表示16进制数字作为ASCII码值对应的字符
// \x61 --> 10进制数字 97 --> a
printf("%c\n", '\x61');
return 0;
}
注释方式:①C++注释风格: // ②C语言注释风格: /* */
9.初识选择语句
int main()
{
printf("你要表白吗?(1/0)\n");
printf("1--要 0--不要\n");
int input = 0;
scanf("%d", &input);
if (input == 1)
printf("表白可能会赚\n");
else
printf("不表白一定不会亏\n");
return 0;
}
10.初识循环语句
int main()
{
printf("你要做我女儿吗?(1/0)\n");
printf("1--要 0--不要\n");
int input = 0;
scanf("%d", &input);
if (input == 1)
printf("好的,乖女儿!\n");
else
int g = 0;
while (g <= 2000)
{
printf("1--要 0--不要\n");
int i = 2;
scanf("%d", &i);
{
if (i == 1)
printf("好的,乖女儿!\n"), g = 2021;
else
g++;
}
}
return 0;
}
11.初识函数
//加法函数:
int Add(int x, int y)//函数参数
{
int z = x + y;
return z;
}//函数体
int main()
{
int a = 1;
int b = 0;
int sum=1;
printf("请输入你想求和的数字\n");
scanf("%d\n", &a);
scanf("%d\n", &b);
sum = Add(a, b);
printf("sum=%d", sum);
return 0;
}
12.初识数组
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//arr[下标]访问第几个元素 从0开始
char ch[5] = { 'a','b','c' };//不完全初始化,剩余的默认为0
//打印数组全部内容:
int i = 0;
while (i < 10)
{
printf("%d\n", arr[i]);
i++;
}
return 0;
}
13.初识操作符
除法 --- /:得到商数不会出现小数
取模 --- %:得到余数
移位操作符 : << --左移 >> -- 右移 如:a<<2
位操作符:
& 按位与 | 全真即真为1 |
| 按位或 | 有1则1 |
^按位异或 | 相同为0 不同为1 |
复合赋值符号:
如:a = a + 10 --- a += 10
单目操作符:
按位取反:
//强制类型转化:
int a = (int) 3.14 ;
关系操作符:
三目操作符:
逗号表达式:从左到右依次计算 整个表达式的结果是最后一个表达式的结果
//下标引用操作符: [] 函数调用操作符---函数名后边使用 ()
14.常见关键字
变量不可为关键字名!
auto : 在局部变量中 //自动创建与销毁 auto int a
register : 寄存关键字
union : 共用体(联合体) void : 无--空
// define include 预处理指令
typedef 类型重定义:
static 静态的:①修饰局部:改变了局部变量的生命周期(本质是改变变量的存储类型)
②修饰全局变量 :使得这个全局变量只能在自己所在的源文件内部使用(全局变量具有外部链接属性 但被static修饰之后 就变成了内部链接属性)③修饰函数:使得函数只能在自己所在的源文件内部使用
15.#define定义常量和宏
1.define定义常量:
#define MAX 1000
16.初识指针
计算机类型: 32位 -- 32根地址线(用来编号) -- 物理线 --通电 1/0
以一个字节为一个内存单元进行编号
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int num = 10;
printf("%p\n", &num);//%p专门用来打印地址
int * pnum = #
//pa是用来存放地址的,在C语言中pa叫指针变量
//*说明pa是指针变量
//int 说明pa执行的对象是int类型
*pnum = 20;//解引用操作 *pa就是通过pa里面的地址找到a 将20赋值给a
return 0;
}
指针变量的大小: 不同类型的指针变量都是相同的 32位---4byte 64位---8byte
17.初识结构体
结构体可以让C语言创造出新的类型
//创造一个学生
struct stu
{
char name{ 20 };
int age;
double score;
};
int main()
{
struct stu s = { "张三",y.5 };//结构体的创建和初始化
//三种不同的打印语法
printf("1:%s %d %lf\n", s.name, s.age, s.score);//结构体变量.成员变量
struct stu *ps = &s;
printf("2: %s %d %lf\n", (*ps).name, (*ps).age, (*ps).score);
printf("3: %s %d %lf\n", ps->name, ps->age, ps->score);//结构体指针->成员变量
return 0;
}