IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 初识C语言 -> 正文阅读

[C++知识库]初识C语言

初始C语言

本章的主要目的是对c语言有一个简单的认识。


前言

既然要去学习c语言,那首先我们需要了解什么是c语言。简单的来说:c语言是一门通用的计算机语言,它广泛的应用于底层开发。那么这就又牵扯到了什么是计算机语言(C/C++/JAVA等等),我们都知道语言分很多种有汉语、英语、日语等等,这些语言的存在方便了人与人的交流,而计算机语言它就是计算机能够识别的语言,通过这个计算机语言可以让计算机执行人所传输的指令。C语言是一种面向过程的计算机编程语言。(之后展开)


第一个c程序

#include<stdio.h>
int main()//main函数是程序的入口
{
   printf("hello word\n");//库函数
   return 0;
}

这其实就是一个简单的c语言的小程序,输出的结果为hello word。在这段代码中#include<stdio.h>是引用一个名为stdio.h的头文件,这个头文件包含了很多的库函数如:printf函数、main函数、scanf函数等等,不同的头文件包含的库函数也不相同。main函数是一个C程序的入口,一个c程序只能有一个main函数,多了就会报错。上图是如何创建,用的是VS2015创建源文件
之后就能创建成功
编译代码的时候按下Ctrl+F5(如果不行的话按住FN+Ctrl+F5)

整个图放松一下 ?*。?(^ ? ^)??。(图片均在P站下载大家康康就好)
整张图放松放松


数据类型

数据类型在代码中无处不在,我们学习c语言首先就应该去了解数据类型。我们生活中数据无处不在,例如价格20元,体重44.3千克,在c语言中我们应该如何去表示这些数据呢?在c语言中像20被称为整型也就int类型,像44.3被称为浮点型(float)等等,c语言中还有很多其他的类型。让我们来一一列举出来:
  • char 字符型
  • short 短整型
  • int 整形
  • long 长整型
  • long long 更长的整形
  • float 单精度浮点型
  • double 双精度浮点型

为什么会有这么多不同的数据类型呢?原因在于不同的数据类型所占的内存空间的大小是不相同的,所以使用的时候需要考虑好,尽量让所写的代码的内存能够合理分配。那让我来具体的看一下这些数据类型的区别吧。(第一张图是代码一闪而过的一种解决方法)
程序一闪而过的一种解决方法代码
由上图可以看出不同的类型的大小也不相同。所以当我们实际选择的时候要选择一些适合的,比如要定义一个变量来存储年龄,short能表示的范围在-32768——+32767,而int能表示的范围在-2^32 —— 2^32-1之间明显远远大于short这时候就应该选择short从而提高内存的利用率。其他的数据类型的选择也根据这一原则。
这些数据类型的简单应用:

int x=10;
char y='A';
float z=1.23;

当使用printf函数输出或者scanf函数输入的时候还有些需要注意的地方:

#include<stdio.h>
int main()
{
int x=0;//定义一个整形变量x,并将x的值初始化为0
int y;//如果不初始化为0,y里面的是一个随机值
scanf("%d",&x);//输入一个值,并将其赋值给x,整形用%d
printf("%d\n",x);//输出x里面存放的值,同样也是用%d,\n是换行的意思
return  0;//不同的数据类型%后面的字母是不同的
}
  • %c–字符
  • %d–整形
  • %s–字符串
  • %p–地址
  • %ld–长整型
  • %f–单精度浮点型
  • %lf–双精度浮点型
char x='A';//''括起来的是字符,""括起来的是字符串,都是用char定义的
printf("%c\n",x);
printf("%d\n",x);

虽然都是输出x,但是结果有着很大的不同%c输出的是A,而%d输出的是65。为什么第二个输出的是65呢?因为在c语言中每个字符都会有一个对应的ASCII码的值(附上一个ascii表供参考)
ASCII码表

所以当使用输入输出函数时要注意%后面的字母是否出错。(并不是说char 定义一个变量后一定要用%c或者%s去输出,根据具体的代码来选择%后面的字母)

(放松X2)
放松X2


变量与常量

在我们生活中总是有一些值是不会发生改变的,例如圆周率,血型,身份证号码等等,而有些值是可以发生改变的如薪资,身高,体重等等,C语言中的常量与变量与生活中的一致。 那么怎样来定义变量呢?
int main()
{
short age=10;//在c语言中变量的定义需要放在开头,不能放在代码的中间去定义
//float weight=44.3;
age=11;
printf("%d\n",age);//结果是11说明age里面的值发生了改变,所以age是变量
}

变量:
变量也有两种大的类型:一种是局部变量,另一种是全局变量

int g=100;//为全局变量,这个变量在整个工程都能使用
int main()
{
   int a=10;//这里a是局部变量,只能在main函数内部使用
   int g=20;
   printf("%d\n",g);//结果是20,即如果局部变量名与全局变量名相同时,局部变量优先输出(并不建议局部变量名与全局变量名相同)
   g=30;//改的是局部变量的g,全局变量的值并未发生改变
   return 0;
}

说到变量就需要引出两个概念—>作用域和生命周期
作用域:
局部变量的作用域:局部变量所在的局部范围
全局变量的作用域:整个工程
生命周期:
局部变量的生命周期:进入局部变量所在的范围,局部变量的生命周期开始,出局部变量的范围生命周期结束。
全局变量的生命周期:程序的生命周期。
常量:
常量的定义与变量相比有些许的不同。
首先是const修饰的常变量

int x=10;//x的值可修改
const int y=2//y的值不可修改

这里面的y就是const修饰的常变量,那什么是常变量呢?首先我们要清楚的是常变量它的本质还是一个变量只是被赋予了常属性(常属性可以理解为就是值在初始化后就不能进行更改了),举一个简单的例子,我们知道数组它在定义长度的时候,[ ]内的数要是一个常量,如果是一个变量程序就会报错,所以当你写出以下程序时:

 const int n=10;
  int arr[n]={0};//这样程序就会报错,这表明n其实是一个变量。
  int arr[20]={0};//这样才是正确的定义了这个数组,并且将其初始化为0
  n=20;//这样程序也会报错,n的值不允许被修改,这表明n具有常属性

其次是字面常量就例如3.4(3.4的值无法被改变无法赋予其他值所以就是字面常量)

接着是#define定义的标识符常量,这又是怎么定义的呢?请看下面的代码:

#include<stdio.h>
#define MAX 10
int main()
{
   int a=MAX;
   int arr[MAX]={0};//这里程序不会报错,这表明MAX是一个常量
   MAX=20;//这样是不被允许的,因为MAX的值被赋予10之后不能再修改
}

最后是枚举常量(enum)
枚举的定义以及使用1注意
这就是枚举常量的简单用法,至此变量和常量的初步认识到这就结束了,大家都辛苦了,放俩张图放松一下(嘿嘿放松X3)
放松X3
(当编译器支持C99标准时,它有一个变长数组的概念,即可以用变量来定义数组)


字符串、转义字符、注释

首先是字符串的概念:简单的来说就是由双引号引起的一串字符,简称字符串。 注意:字符串的结束标值是\0的转义字符,在计算字符串长度时\0作为结束标志,不算做是字符串的内容。

  char arr1[10]="asdfgh";//这是有7个字符
  char arr2[10]={'a','s','d','f','g','h','\0'};
  //这样arr1与arr2中所存的才是相同的,如果不加'\0'则不相同
  //'A'-->char--是字符类型
  //"asdfg"-->这是字符串类型
  //'AB';-->这样写是错误的,单引号只能括起来一个字符

12

其次是转义字符,转义字符就是转变原来的意思。下面是转义字符及其意义。
1
最后是注释这个其实很好理解,就是解释说明的语言,当然有的代码不用的话也是可以注释或者删除的,有了注释能让代码看起来更有感觉,注释的方法有以下两种:

int a=10;//定义一个变量a(c++的注释风格,在c语言中可用)
int b=20;/*定义一个变量b(c语言的注释风格)*/

要保证注释的语句在/* */里面,同时这两部分需要一一对应,否则会报错。
缺陷: c语言注释风格不能进行嵌套注释。
(写的比较多看到这的小伙伴们咱们再放松一下)
放松x4


选择语句

在我们的生活中面临着各种各样的选择,在c语言程序中也有选择。让我们来举一个简单的例子,就比如你现在要出一趟远门吧,你需要选择交通工具,为了方便我们用1来代表坐火车2来代表坐高铁3来代表坐飞机,让我们来开始写代码。
  #include<stdio.h>
  int main()
  {
      int input=0;
      printf("请选择交通工具:");
      scanf("%d",&input);//这是scanf语句的语法
      if(input==1)
      printf("坐火车\n");
      else if(input==2)
      printf("坐高铁\n");
      else if(input==3)
      printf("坐飞机\n");
      else
      printf("输入错误请重新输入\n");
      return 0;
  }

这是第一种if的写法;

#include<stdio.h>
int main()
{
	int input = 0;
	printf("请选择交通工具:");
	scanf("%d", &input);//这是scanf语句的语法
	switch (input)//这是switch的语法后面会介绍现在是先了解一下
	{
	case 1:
		printf("坐火车\n");
		break;//如果没有break;执行完case 1之后会继续执行case 2
	case 2:
		printf("坐高铁\n");
		break;
	case 3:
		printf("坐飞机\n");
		break;
	default:/*代表的是否则,就是输入的值不属于case里面的其中一个
	就会执行default里面的代码,同时default没有固定位置*/
		printf("输入错误,请重新输入\n");
		break;
	}
		  return 0;
}

这是第二种switch的写法。
以上就是对选择结构的初步认识。
clannad


循环语句

在我们生活中同样有些事情需要我们反复去做,要不断的重复某一种动作,在c语言中不断重复的过程也就是循环,在这里简单的介绍一下几种常见循环的基本形式,具体会在后面的博客进行详细的解释。
首先是while循环,例题的话我们都以打印1–10为例吧。

#include<stdio.h>
int main()
{
    int x=1;
    while(x<=10)
    {//如果不止一个语句需要用花括号括起来
       printf("%d ",x);
       x++;//意思为x自加1
    }
    return 0;
}

接着是for循环

#include<stdio.h>
int main()
{
    int x=1;
    for(x=1;x<=10;x++)//(给循环变量初始化;判断条件;变量改变)
    {//如果不止一个语句需要用花括号括起来,只有一句的话可括可不括
       printf("%d ",x);
    }
    return 0;
}

最后是do…while循环

#include<stdio.h>
int main()
{
	int x = 0;
	do
	{
		x++;//意思为x自加1
		printf("%d ", x);
	
	} while (x < 10);
	return 0;
}

以上就是对循环的初步认识,目的就是能够知道什么是循环,知道循环大概是怎么去书写的,还有很多东西留到后面去写。好啦又到了咱们的放松时间。
x5


函数

对于函数这个概念,我认为函数就是一个比较独立的代码块,具体的话我们来看个例子吧,就用两数之和来作为例子。

#include <stdio.h>
int main()
{//如果要连续创建相同类型的变量记得是,不是;
    int num1,num2,sum=0;
    printf("请输入两个数: ");
    scanf("%d%d"&num1,&num2);
    sum=num1+num2;
    printf("%d\n",sum);
    return 0;
} 

接下来是函数的写法:

#include <stdio.h>
int Add(int num1,int num2)//int Add的int根据函数的返回值来定的
//(int num1,int num2)前面的int根据的是传给Add函数的值的类型来定的
{
    int sum=0;
    sum=num1+num2;
    return sum;//将sum的值返回
}
int main()
{
    int num1,num2,sum=0;
    printf("请输入两个数: ");
    scanf("%d%d"&num1,&num2);
    sum=Add(num1,num2);//用sum来接收Add函数的返回值
    printf("%d\n",sum);
    return 0;
} 

简单的了解一下函数的结构,以及使用方法,后面会深入学习。
x6


数组

所谓数组,那到底什么是数组呢?顾名思义数组就是很多数的集合,那么对于这些数有没有什么要求呢?是不是不管什么数组合在一起都是数组呢?在同一数组中存储的数必须满足以下两个条件:
这些数的类型必须相同。
这些数在内存中必须是连续存储的。(之后细讲)
我们这次的目的就是简单的认识一下,请看下面的代码

#include<stdio.h>
int main()
{
	int arr[10] = { 0 };//这里是定义了一个一维数组
	//并且把这个一维数组里面元素的值都初始化为了0
	int i = 0;
	for (i = 0; i < 10; i++)//存储10个数在数组中
	//[]括起来的是下标,数组的下标都是从零开始的
	{
		scanf("%d", &arr[i]);
	}
}

调试过程
x7


操作符

操作符的种类有很多,我们先来简单的介绍一下

  • 算数操作符:+(加)-(减)*(乘)/(除)%(取模即求余数)
  • 移位操作符: >>(右移操作符) 和<<(左移操作符)(移动的是二进制位)
  • 位操作符: &(按位与) |(按位或) ^(按位异或)
  • 赋值操作符:= += -= *= /= &= |= ^= >>= <<=
  • 单目操作符(就是只有一个操作数)
    ! 逻辑反操作(简单点就是把真变为假把假变为真在c语言中0为假一切非零都为真,当被!改为真时默认就是1)
    – 负值
    ) + 正值(忽视“ )”)
    & 取地址
    sizeof 操作数的类型长度(单位是字节)
    ~ 对一个数的二进制位按位取反(可以理解为原来为1取反后为0,原来为0取反后为1)
    0 – – 前置,后置(前置是先- -再赋值,后置是先赋值再- -)(忽略0)
    ++前置,后置(前置是先++再赋值,后置是先赋值再++)
    0 * 间接访问操作符也可以说是解引用操作符(到指针再说,忽略0)
    (类型)强制类型转换float a=1.2;int b= (int)a;这个小代码的意思就是说定义一个浮点型变量a其值为1.2,定义一个整形变量b它的值是将a强制转化为整形后的值,浮点型向整形转化会丢掉小数点后的数所以b=1。

有几个操作符需要注意一下%的左右两边必须是整数同时,与结果的符号与%左边的保持一致

移位和位操作符都是针对二进制位int a=10>>1;这个的意思就是定义一个变量a它的值是10右移1,我们知道10的二进制位是00001010(只写后8个bit位,前面剩的24位全是0)它右移一位就得到了00000101转化为10进制就是5;

&按位与的话就是只有两个全为1时才为1,其他都为0,举个例子int a=3 & 6;3的二进制为011,6的二进制为110,他们按位与之后的结果为010转换为10进制就是2;同理|按位或的话是只有两个全为0时才为0,其他都为1;^按位异或记住同为0异为1就好;
对于赋值操作符举一个例子其他都是同理a+=b;就相当于a=a+b;

  • 关系操作符
    1.> 大于
    2. >=大于等于
    3. < 小于
    4. <=小于等于
    5. !=不等于
    6. == 比较是否相等(单个=是赋值)
    -逻辑操作符
    && 逻辑与(可以理解为并且,左右两个条件都为真)
    | | 逻辑或(可以理解为或者,两个有一个为真即可)
  if(a=>1&&a<=10)
  printf("haha\n");//只有在1——10之间才能打印haha
if(a<=10||a>=20)
printf("haha\n");//a<=10或者a>=20,只要满足一个就能打印haha
  • 条件操作符
    exp1 ?exp2 :exp3(exp代表表达式)
int  x=a>b?a:b;//代码就是判断a>b
//如果为真那么就是输出 :左边的也就是a
//如果为假就是输出右边的也就是b
  • 逗号表达式
    exp1,exp2,exp3…
    逗号表达是遵循着从左到右依次计算,然后最后一个表达式的结果就是整个逗号表达式的结果

x8


常见关键字

只是把它们的大致用法讲了下,后面会详细写它们的用法的

auto :定义自动变量(一般都被省略了)

int a=0;//其实就是 auto int a=0;

short :定义短整型变量或函数   
int: 定义整型变量或函数
long :定义长整型变量或函数   
float:定义浮点型变量或函数   
double :定义双精度变量或函数   
char :定义字符型变量或函数   
struct:定义结构体变量  
union:定义共用数据类型   
enum :定义枚举类型   
typedef:用以给数据类型重命名(比如当一个结构体类型名称很长时,可以用typedef来给他重命名)  
const :修饰变量,使变量具有常属性,变量的值不能够被改变,并且用const定义一个变量的时候要初始化。
unsigned:定义无符号类型变量或函数   
signed:定义有符号类型变量或函数   
extern:它是用来声明其他源文件中的变量(也叫做外部变量) 
register:寄存器变量   
static :声明静态变量 (当它修饰局部变量的时候,改变局部变量的生命周期但是不影响作用域 ;当它修饰全局变量时因为一个全局变量默认具有外部链接属性,被static修饰的时候外部链接属性会变成内部链接属性,此时全局变量只能在当前源文件中使用,其他源文件无法链接到,就无法使用;修饰函数也是同全局变量一样)  
volatile:说明变量在程序执行中可被隐含地改变   
void :声明函数无返回值或无参数,声明无类型指针   
if:条件语句   
else :条件语句否定分支(与 if 连用)   
switch :用于开关语句   case:开关语句分支   
for:一种循环语句   
do :循环语句的循环体   
while :循环语句的循环条件   
goto:无条件跳转语句   
continue:结束当前循环,开始下一轮循环   
break:跳出当前循环   
default:switch语句中的“其他”分支   
sizeof:计算数据类型的长度   
return :返回语句,比较常见的使用方法是与函数搭配使用
x9


总结

啊终于结束了,这是我第一次写这种博客,我大概用了两天的时间来写,里面肯定会有很多的不足,也有可能会有些错误,希望各位大佬们如果看到的话跟我说一下,我会及时的改正的,要是有什么好的建议,或者其他的一些东西都可以跟咱说,我会尽量去改变的,希望我们都能越来越好,加油!!!
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:27:42  更:2021-07-11 16:27:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 22:06:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码