请回答c语言-初识c语言(上)【入门】
1.为什么我们要学习c语言?
C生万物
编程之本
长远IT职业发展的首选
C语言是母体语言,是人机交互接近底层的桥梁
学会C/C++,相当于掌握技术核心
知识点一竿子打通。
IT行业,一般每10年就有一次变革
近50年间,在TIOBE 排行榜中,C/C++位置长期霸占前三名,没有丝毫撼动,可谓经典永不过时!
2.什么是C语言
语言是交流与沟通的工具,
人与人之间交流,我们可能会用到中文,英文,韩文等等,
而人和计算机交流会用到计算机语言(C/C++/Java/Python…),
C语言就是一种最常见的计算机语言.
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
3.第一个C语言程序
经典hello world
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
注意 main函数有且仅有一个
main 函数是程序的入口
程序是从main函数的第一行开始执行的int main函数结束后会返回一个返回值
0就是一个整数,就是main函数返回的
以往用void main 现在不太用这么写了,请不要这么写
4.利用编译器
现在我们常用的集成开发环境是Visual Studio,它能够实现很多功能,强推一波
但是学习c语言的话可能会遇到scanf函数不安全报错问题需要这样一句话
#define _CRT_SECURE_NO_WARNINGS 1
具体方法可以参照这个博客完美解决
VS2019解决输入scanf报错问题方法(保姆级)
5.数据类型
凡是计算机语言肯定要有用来表示数据类型的符号,c语言中也存在着许多类型,目的就是为了更加丰富地表达生活中的各种值。
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
为什么要细化那么多的类型呢?
每个类型有不同大小,怎么来看大小呢?
利用关键字sizeof 它的单位是字节
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);
6.常量与变量
生活中的有些值是不变的,有些值是可变的。
不变的值,C语言中用常量的概念来表示,变的值C语言中用变量来表示。
变量在创建的时候我们应该初始化,不初始化是一种非常不好的代码风格。
6.1变量的定义方法
int age = 18;
float weight = 150.1;
char ch = 'a';
6.2局部变量和全局变量
在代码块内部定义的是局部变量
在代码块外部定义的是全局变量一般在括号内部的就是局部变量
int main() { int a=10; { int b=20;//局部 } return 0; }
局部变量和全局变量的名字冲突时,局部优先
6.3使用变量
使用变量的话我梦以最简单的例子来看。
利用scanf方法和printf方法实现变量的输入输出。
#include <stdio.h>
int main()
{
int m = 0;
int n = 0;
int sum = 0;
printf("输入两个数:");
scanf("%d%d", &m, &n);
sum = m + n;
printf("sum = %d\n", sum);
return 0;
}
6.4 变量的作用域和生命周期
作用域
局部变量的作用域应该是其所在的作用范围,出了作用域就用不了了
可以看到g是在任何地方都可以打印的
a可以在main函数里面打印
而b只能在大括号里面打印
总结:
局部变量的作用域是变量所在的局部范围。
全局变量的作用域是整个工程。
生命周期
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
6.5常量
C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:
-
字面常量
-
const 修饰的常变量
-
define 定义的标识符常量
-
枚举常量
-
#include <stdio.h> //举例 enum NBA//枚举需要先声明枚举常量 {//以下就是枚举该类型可能的取值 LEBRON,//0 CURRY,//1 KD,//2 }; //字面常量 int main() { //字面常量 3.14;//字面常量 1000;//字面常量 //const 修饰的常变量 const float pai = 3.14; //这里的pai是const修饰的常变量 //const修饰变成常量是不能直接修改的! //#define的标识符常量 #define SCORE 100 printf("score = %d\n", SCORE); //枚举常量 printf("%d\n", LEBRON); printf("%d\n", CURRY); printf("%d\n", KD); //注:枚举常量的默认是从0开始,依次向下递增1的 0,1,2... return 0; }
注:
上面例子上的pai 被称为const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了
变量pai 不能直接被改变,但是pai 本质上还是一个变量的,所以叫常变量。
7. 字符串+转义字符
7.1字符串
"hello world"
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
转义字符\0
字符串的结束标志是一个\0 的转义字符。
以下的代码可以看到区别:
int main()
{
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%s\n",arr1);
printf("%s\n",arr2);
}
输出的内容如下
这是因为arr1中的定义方法自动有’\0’.
正因为有\0所以在打印arr1时,\0是字符串的结束标志,arr1在打印完abc之后就结束了.
而arr2的定义方式因为不知道什么时候停下来,因此出现了其他字符.
改成char arr3[]={'a','b','c','\0'};
即可
在计算字符串长度的时候\0 是结束标志,不算作字符串内容。
比如这个arr1 看出有3 个字符 而arr2则因为没有\0而输出了随机的15
7.2 转义字符
举个例子:当同时打多个?时,有些编译器会解释为三字母词(不重要)
可以用转义的 \ 解决
再举个例子:
1:在屏幕上打印一个单引号’,怎么做?
2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
#include <stdio.h>
int main()
{
printf("%c\n", '\'');
printf("%s\n", "\"");
return 0;
}
8.注释
- 代码中有不需要的代码可以直接删除,也可以注释掉
- 代码中有些代码比较难懂,可以加一下注释文字
- 加太多也不好,会显得冗余和不专业
比如:
注释有两种风格:
- C语言风格的注释 /* xxxxxx */
- 缺陷:不能嵌套注释
- C++风格的注释 // xxxxxxxx
- 可以注释一行也可以注释多行
9.选择语句
#include <stdio.h>
int main()
{
int melon = 0;
printf("你这瓜保熟吗?选择熟(1) or你TM找茬是吧(0):");
scanf("%d", &coding);//输入
//判断
if(melon == 1)
{
prinf("我开水果摊能卖你生瓜蛋子\n");
}
else
{
printf("华强撒日朗\n");
}
return 0;
}
10.循环语句
有些事必须一直做,比如日复一日的学习和代码练习。
还比如:
C语言中如何实现循环呢?
while语句
for语句(之后)
do … while语句(之后)
//以下给出while循环的实例
#include <stdio.h>
int main()
{
printf("学习一项技能\n");
int hour = 0;
while(hour<=10000)
{
hour++;
printf("我要继续努力挤时间练习\n");
}
if(hour>10000)
printf("学成出师了\n");
return 0;
}
总结
本版块内容只是简单的介绍c语言初级知识,内容不细致,后面会分成逐个版块细细记上笔记分享。感谢支持!
由于文章太长容易读不下去,后面的内容会分享到下一个博客中,后期会补上链接
后面的主要内容是:
函数
数组
操作符
常见关键字
define 定义常量和宏
指针
结构体