一键三连加关注哦(不要下次一定哦)
本章目标
秃头侠们好呀,今天我们一起初识C语言!
目标:基本了解C语言的基础知识,对C语言有一个大概的认识。每个知识点简单了解就好,之后会细讲。希望经过我们的交流,秃头侠们能对C语言更加自信!
什么是C语言
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSIC,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。 C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
第一个C语言程序
#include <stdio.h>
int main()
{
printf("hello world!\n");
return 0;
}
(已深入理解hello world)(狗头)
数据类型
C语言中有那些数据类型呢?
char
short
int
long
long long
float
double
为什么会出现这么多类型?
答:存在这么多类型,其实是为了更加丰富地表达生活中的各种数值。 比如:
char ch='w'
int a=30;
float b=2.0
double c=3.14
每种类型的大小是多少?
我们可以用sizeof() 这个操作符来计算类型的大小
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));
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));
printf("%d\n", sizeof(long double));
return 0;
}
变量、常量
生活中的有些值是不变的 (比如:圆周率,性别 (这个不好说哈),身份证号码,血型等等) 有些值是可变的(比如:年龄,体重,薪资)。 不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。
定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = 'w';
变量的分类
- 全局变量
- 局部变量
#include <stdio.h>
int global = 2022;
int main()
{
int local = 2021;
int global = 2020;
printf("global = %d\n", global);
return 0;
}
答案:输出结果为global=2020 下面定义的global 没有问题,当全局变量和局部变量冲突时,优先使用局部变量!(尽量不要冲突)
变量的使用
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &a, &b);
sum = a + b;
printf("sum = %d\n", sum);
return 0;
}
我们定义了3个变量,分别为int num1 = 0; int num2 = 0; int sum = 0; 并且都初始化为0。 我们介绍一下printf和scanf scanf 是输入函数,就此题,我们要键入两个数值(用空格隔开),这两个数值则被赋值给了a 和b ,& 是取地址操作符,记住格式就够,%d 是打印整形
除了%d,还有 %c-打印单个字符 %f-打印浮点数 %p-以地址形式打印 %x-打印16进制数字 %s-打印字符串
sum=a+b a+b的结果赋值给了sum(注意= 是赋值操作符== 才是等于) printf 是输出函数,就此题则是输出sum=结果值 输出结果会显示在屏幕上。\n 是换行操作符。格式记住就够。
变量的作用域和生命周期 作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
- 局部变量的作用域是变量所在的局部范围。
- 全局变量的作用域是整个工程。
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
常量 C语言中的常量和变量的定义的形式有所差异。 C语言中的常量分为以下以下几种:
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
#include <stdio.h>
enum Sex
{
MALE,
FEMALE,
SECRET
};
int main()
{
3.14;
1000;
const float pai = 3.14f;
pai = 5.14;
#define MAX 100
return 0;
}
本来pai 是一个变量,可以更改,但是用const 修饰之后,pai 就变成了常变量,pai 就不可以被修改了。 那么3.14f 就真的不能被修改了吗?其实可以用指针的方式修改它的地址,解引用来改变其值。这里不细讲。
数组
C语言中的定义为:一组相同类型元素的集合
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int arr[]={1,2,3,4,5};
char arr[3]={'a','B','\n'};
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
字符串+转义字符
字符
char arr[]="abcdef";
#include <stdio.h>
int main()
{
char arr1[] = "bit";
char arr2[] = {'b', 'i', 't'};
char arr3[] = {'b', 'i', 't', '\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
结果为 我们可以看到,如果没有\0 代码会出错,因为字符串结束标志为\0 识别不到\0 就不知道何时结束,而是随机往后继续找到\0 为止,所以出现乱码。
转义字符 首先我们先看一段代码,如果我们打印此内容,会输出什么结果呢?
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
return 0;
}
为何会出现这种结果? 因为\c \t 会被转义为'c' 字符和Tab (水平制表符) 所以我们需要介绍一下转义字符都有那些
转义字符 | 释义 |
---|
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 | \’ | 用于表示字符常量’ | \“ | 用于表示一个字符串内部的双引号 | \\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符。 | \a | 警告字符,蜂鸣 | \b | 退格符 | \f | 换页符 | \n | 换行 | \r | 回车 | \t | 水平制表符 | \v | 垂直制表符 | \ddd | ddd表示1~3个八进制的数字,如:\130X | \xdd | dd表示2个十六进制数字, 如: \x30 0 |
printf("c:\\code\\test.c\n");
我们看一道笔试题,问结果是多少(已知strlen 是计算字符串长度的一个函数)
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));
printf("%d\n", strlen("c:\test\328\test.c"));
return 0;
}
结果为: 6就不用多说,我们主要来说说14怎么来的
c : \t e s t \32 8 \t e s t . c
应该不难理解有\ 就要注意是否形成转义字符
选择语句
选择语句很好理解,如果怎么,则怎么,否则怎么
#include <stdio.h>
int main()
{
int a = 0;
printf("你要敲代码吗?(选择1 or 0):>");
scanf("%d", &a);
if(a == 1)
{
prinf("进大公司\n");
}
else
{
printf("家里蹲\n");
}
return 0;
}
循环语句
除了选择语句还有循环语句,你一直坚持循环干一件事直到达到目的。 那么C语言中有那些循环语句
- whlie语句
- for循环
- do…while语句
#include <stdio.h>
int main()
{
printf("做程序员\n");
int line = 0;
while(line<=20000)
{
line++;
printf("继续敲代码\n");
}
if(line>20000)
printf("赢取白富美\n");
return 0;
函数
函数的作用就是简化代码,只需定义一次,声明后就可重复使用,提高编程效率
#include <stdio.h>
int Add(int x, int y)
{
int z = x+y;
return z;
}
int main()
{
int a = 0;
int b = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &a, &b);
sum = Add(a, b);
printf("sum = %d\n", sum);
return 0;
}
简单了解就好,之后细讲
操作符
也不做过多解释了解。
常见关键字
C语言中共有32个关键字,在C99中又增加了5个
define 定义常量和宏
#define MAX 1000
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0;
}
如图代码和结果就能简单的认识到define的作用
指针
内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
int main()
{
int num = 10;
#
printf("%p\n", &num);
return 0;
那地址如何存储,需要定义指针变量
int num = 10;
int *p;
p = #
#include <stdio.h>
int main()
{
int num = 10;
int *p = #
*p = 20;
return 0;
}
指针大小在32位平台是4个字节,64位平台是8个字节
结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。 如描述学生,包含:名字+年龄+性别+学号这几项信息。 这里只能使用结构体来描述了。 例如:
struct Stu
{
char name[20];
int age;
char sex[5];
char id[15];
};
struct Stu s = {"张三", 20, "男", "20180101"};
printf("name = %s age = %d sex = %s id = %s\n",
s.name, s.age, s.sex, s.id);
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n",
ps->name, ps->age, ps->sex, ps->id);
说了这么多终于结束啦(肝儿疼) 如有错 欢迎提出一起交流 后面会持续输出,持续关注周周汪哦
记得关注三连哦
|