01初识C语言

Posted 再吃一个橘子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01初识C语言相关的知识,希望对你有一定的参考价值。

我决定了要成为海贼王便要为此而战,我必须变的更强。———路飞

阶段1目标:

基本了解C语言语法,站在全局,避去晦涩难懂,鲜明梳理C语言基本概念,为算法竞赛等计算机专业比赛铺好道路。传统功夫讲究点到为止,此阶段仅点明语法知识,后续阶段再进一步精进学习。

一.何为C语言?

首先浅谈什么是语言:人与人之间交流沟通的语言——汉语,英语......

再谈计算机语言——人与计算机交流的语言:C/C++/JAVA

而C语言主要用于底层软件开发的语言

二.hello world!

主函数
#include<stdio.h>
//stdio——标准输入输出
int main(){

//库函数——打印函数——输出函数
    printf("hello world!\\n");
    return 0;
}

注意:

  1. main函数是程序入口,一个工程只能有一个main函数
  2. void main函数与int main函数与int main(void)函数区别:

void  main(){  }是一种过时写法,一般不常用;

int main(){  }常用写法,可以传参数;

int main(void){  }明确告诉我们main函数不需要参数

三.数据类型

数据类型:

char         //字符型
short        //短整型
int          //整型
long         //长整型
long long    //更长的整型
float         //单精度浮点型
double         //双精度浮点型

计算一个类型创建的变量所占的空间大小:

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));

return 0;

}

类型的使用:

char ch = 'w';//单个字符
int age = 19;

计算机中的单位 :

bit < byte < kb < mb < gb < tb < pb 

注释:

(1字节 = 8比特      1byte = 8bit   )

(kb~pb相邻位置转换都是1024)

四.变量,常量

变量

定义变量的方法:

char ch = 'w';
int weight = 100;

变量的分类:

  1. 全局变量
  2. 局部变量
#include<stdio.h>
int a = 10;//全局变量
int main(){

int a = 18;//局部变量
printf("a = %d\\n",a);
return 0;

}

注意:当局部变量和全局变量同名时,局部变量优先使用

变量的作用域与生命周期

作用域:

作用域:在程序中代码不总是有效可用的,而这个代码的可用的范围就成为作用域

注意:

  1. 局部变量的作用域是变量所在的局部范围
  2. 全局变量的作用域是整个工程
int main(){

{
int a = 10;
printf("%d\\n",a);

}

return 0;
}

注:若是printf放在return 上,则不能使用

全局变量作用于整个工程:

extern 用于声明自己文件外的变量:

生命周期:

生命周期:变量的生命周期是指变量的创建到变量的销毁之间的一个时间段

注意:

  1. 局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束
  2. 全局变量的生命周期是整个程序的生命周期

局部变量用完销毁以后,内存空间还存在吗?————>出了作用域,局部变量生命周期结束,局部变量不再起作用,自动销毁,但是内存单元还在,只是没有访问权限了。即:自动销毁 = 没有访问权限了

常量

C 语言中的常量和变量的定义的形式有所差异。
C 语言中的常量分为以下以下几种:
  1. 字面常量
  2. const 修饰的常变量
  3. #define 定义的标识符常量
  4. 枚举常量

字面常量,const 修饰的常变量如下应用解释:

const 修饰的常变量,本质上还是变量,只是不可被修改(数组下标为例)

延伸内容:变长数组

#define 定义的标识符常量

枚举常量(枚举———> 一 一列举出来)

应用场景:在生活中,有的值可以列举出来,比如性别——>男 or 女 or 保密(手动dog....),三原色:red,green,blue

#include<stdio.h>
//性别
//enum Sex 枚举类型  类似于 int ,double  这种数据类型
enum Sex {

	//枚举的可能取值——枚举常量

	MALE,                 //默认是1
    FEMALE,               //默认是2
	SECRET                //默认是3

};
#include<stdio.h>
int main() {
	
	enum Sex s = FEMALE;

	printf("%d\\n", s);
	printf("%d\\n", MALE);
	printf("%d\\n", FEMALE);
	printf("%d\\n", SECRET);//枚举默认的值从上至下依次是0,1,2...

	return 0;
}

又如:

枚举常量赋值问题:

注意:(1) enum Sex 枚举类型  类似于 int ,double  这种数据类型

           (2) 枚举默认的值从上至下依次是0,1,2...

           (3) 枚举常量输出时,有赋好初值的直接输出,无赋初值的顺次往下输出

           (4) 枚举常量,在枚举类型enum里可以赋初值,但是在main()函数里不可赋值修改

五.字符串+转义字符+注释

字符串

“hello  world”

这种由双引号 引起来的一串字符称为 字符串字面值 ,或者简称 字符串
注:字符串的结束标志是一个 \\0 的转义字符。在计算字符串长度的时候 \\0 是结束标志,不算作字符串内容

例如:f后隐藏一个\\0,相当于在10个大小的数组中放了abcdef\\0,剩下三个字符自动补齐\\0\\0\\0,代码如下(此处用了VS2019的代码调试功能,具体调试步骤见我其他博客)

粗略步骤:1.fn+f10,2.单机 调试—>窗口—>监视—>监视1

调试步骤:(大致步骤,详细步骤另见博客)

注意输出内容:单个字符输出如果末尾自己不添加'\\0',则会输出随机值

注意:单个字符输出的时候,若没有‘\\0’,则输出的是随机值,随机遇见一个\\0,才停止

strlen函数

——>求字符串长度,\\0是字符串结束的标志,不算长度

转义字符

转义字符——>转变意思

  转义字符

                                                                   释义

              \\?
        在书写连续多个问号时使用,防止他们被解析成三字母词
              \\'        表示字符常量'
             \\"
        用于表示一个字符串内部的双引号
             \\\\
        用于表示一个反斜杠,防止它被解释为一个转义序列符。
             \\a
        警告字符,蜂鸣
             \\b
        退格符
             \\f
        进纸符
             \\n
        换行
             \\r        回车
             \\t        水平制表符
             \\v
        垂直制表符
             \\ddd
         ddd表示1~3个八进制的数字。 如: \\130 X
            \\xdd
         dd表示2个十六进制数字。 如: \\x30 0

我们要在屏幕上打印一个目录: c:\\code\\test.c,如何打印呢?

(延伸:三字母词)

十进制数字对应的字符的ASCII码表:

笔试题:

字符串输出什么??
#include<stdio.h>
int main(){

printf("%d\\n",strlen("abcdef"));
printf("%d\\n",strlen("c:\\test\\328\\test.c"));

return 0;

}

注意:

解释:c:\\test\\328\\test.c中\\328需要拆开成\\32和8,因为\\ddd表示八进制,则数字属于0~7,不能出现8,则表示8进制数\\32和十进制数字8两个字符

注释

注释有两种风格:
  1. C语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释

    2.C++风格的注释 //xxxxxxxx

可以注释一行也可以注释多行

六.选择语句

根据不同的条件,选择执行与之相对应的语句。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
	int score = 0;
	printf("请输入考试分数:");
	scanf("%d", &score);

	if (score > 90) {
		printf("恭喜你被录取了!!");
	}
	else {
		printf("很遗憾,再接再厉!");
	}
	return 0;
}

如果if( ){  }里满足条件,则执行if里的程序,否则执行else{  }语句里的程序

七.循环语句

当条件成立时,就会不断执行循环语句中的内容,直到条件不成立时,才跳出循环。

C语言循环结构如下:

  1. while语句
  2. for语句
  3. do...while语句

本文初识C语言暂且只介绍while循环语句,后续文章再逐个分析

//while循环实例
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
	int a = 0;
	while (a < 100) {
		a++;
		printf("我是要成为海贼王的男人!\\n", a);
	}
	
	return 0;
}

当a<100时,执行while循环语句,当a>=100时,跳出循环,因此打印出100行“我是要成为海贼王的男人”。

八.函数

当我们进行运算时(加减乘除),我们会写一个运算表达式,但是若是表达式过长或者是我们只想在需要调用的时候才调用这个运算式,这个时候我们就可以把运算式子集中起来,写成一个函数,在需要调用的时候调用,代码复用,简化代码。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int Add(int x, int y) {

	int z = 0;
	z = x + y;
	return z;

}
int main() {
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	//输入
	scanf("%d,%d", &num1, &num2);

	//计算
	//sum = num1 + num2;
	sum = Add(num1, num2);
	printf("%d", sum);
	return 0;
}

程序的数据类型是由自己调用的函数原来的数据类型决定的,如下图所示:

九.数组

数组就是一组相同类型元素的集合,用来存放多个相同类型的元素

1.数组的定义:

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个整形元素

int 是数组的类型;arr是数组的名字;[10]是数组的大小,数组的大小也可以不写,编译器会自动识别数组的大小;{ }内是数组的每个元素。

以上是关于01初识C语言的主要内容,如果未能解决你的问题,请参考以下文章

第初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

初识C语言之常量与变量