一篇文章带你了解C语言:入门基础

 更新时间:2021年8月4日 00:00  点击:1700

闲话少说,先上思维导图。

如图所示,现在还是初识C语言的第一部分,本次只介绍了C语言本身特点,数据类型,常量变量,字符串转义字符注释,选择循环语句,函数,数组。

接下来请和我一起粗略地探讨其中内涵所在。

C语言本身特点

这是C语言的定义:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

但总结其特点就是

1.底层开发,

2.国际标准 ANSI C,

3.面向过程

#include <stdio.h>
//stdio-标准输入输出  standard input & output headfile
//int -整型-整数的类型
//主函数
//main函数是程序的入口
//唯一性有且仅有一个
int main()
{
	//库函数-打印函数-输出函数
	printf("hello world!\n");
	printf("hello world!\n");
	printf("hello world!\n");

	return 0;
}
//这种写法明确告诉你,main函数不需要传参
int main(void)
{
}
//这种写法有用,但不是重点
int mian(int argc, char* argv[])
{
}

数据类型

C语言主要有六种数据类型,分别为字符型char,短整型short,整形int,长整型long,单精度浮点型float以及双精度浮点型double。

这六种分别有自己的字符长度即其所建变量所占的空间,char最小只要1个字节,short占2个,int占4个,long一般是4个,也有可能是8个,反正只要满足long的字节长度大于等于int就可以了。两个浮点型的最为特殊,分别是4和8,显然双精度的精度更高。

int main()
{
	//如何计算一个类型创建的变量所占空间的大小
	//sizeof();
	printf("%d\n", sizeof(char));//1个字节
	printf("%d\n", sizeof(short));//2个字节
	printf("%d\n", sizeof(int));//4个字节
	printf("%d\n", sizeof(long));//4个字节
	printf("%d\n", sizeof(long long));//8个字节
	printf("%d\n", sizeof(float));//4个字节
	printf("%d\n", sizeof(double));//8个字节
return 0;
}

常量变量

变量分类

显而易见的是,分为两类变量和常量讲述。变量又分两类,一是局部变量,二是全局变量。

顾名思义,局部变量是定义在一对大括号内的,显然我们平时在main函数里创建的都是局部变量,全局变量则为定义在大括号外面的变量。当二者同名时,局部变量优先,当然,这种代码谁写谁SB。

使用小建议

在程序中使用scanf函数,若程序为scanf("%d%d");%d%d之间不管有没有空格,输入变量时都要用空格隔开,若二者之间有逗号则逗号隔开。

生命周期作用域

对这二者讨论他们的作用域和生命周期的话,全局变量的作用域为整个工程文件,若想在其他.c文件中使用则需要extern声明一下,生命周期呢,则是整个工程的生命周期,也就是main函数的生命周期。局部变量的作用域为其定义的大括号{ }内,进作用域生命开始,出则结束。

//验证局部变量的作用域 
int main()
{
	int b = 100;//主函数任意位置
	{
		int a = 10;//局部变量作用域:局部所在范围
		printf("a=%d\n", a); 
		printf("b=%d\n", b);
	}
	//printf("a=%d\n", a);
	printf("b=%d\n", b);

	return 0;
}

//验证全局变量的作用域为整个工程
int a = 200;
void test()
{
	printf("test:%d\n", a);
}
int main()
{
	test();
	printf("main:%d\n", a);//全局变量可以任意使用
	return 0;
}
//全局变量在其他源文件的使用
//转到test1.c文件查看
int g_val = 110;

//验证局部变量的生命周期为进作用域到出作用域
int main()
{
	{
		int a = 100;
		printf("%d\n", a);
	}
	printf("%d\n", a);//出作用域即生命周期结束
	return 0; 
}

//全局变量的生命周期为整个工程即main函数生命周期
int main()
{
	printf("%d\n", g_val);

	return 0;
}

常量分类及其特点

常量呢,大致分为四种,1字面常量,2const修饰的常变量,3#define定义的标识符常量,4枚举常量。

第一种,字面常量就是随便写出来的一个数,如3.14就是一个字面常量。

第二种,const修饰的常变量,即在创建变量时加上const修饰,如const int a=0;这样变量a就具有了常属性,不可被修改。但值得注意的是,常变量一词,它仍然是个变量,不可用于定义数组。

//const修饰的变量
int main()
{
	//局部变量
	int a = 200;
	//不可被改变的属性,常属性
	const int a = 110;
	a = 100;
	printf("%d\n", a); 
	//const修饰的变量不可定义数组
	//(常变量)
	int n = 110;
	int arr[n] = { 0 };//数组

	return 0;
}

第三种,#define定义的常量,写法如 #define N 10,这是真真正正的常量,可以用来定义数组。同样也是不可修改的(常量当然不可被修改)。

#define PAI 314
int main()
{
	int a = PAI;
	printf("a=%d\n", a);
	//MAX = 300;//#define定义的变量不可被修改
	//可用于定义数组
	int arr[PAI] = { 0 };
	return 0;
}

第四种,枚举常量,具体使用方法像enum sex {MALE,FEMALE,SECRET};这样就得到了枚举常量,各自都是有初值的,分别为0,1,2依次类推,当然也可以自己赋值。

//枚举常量 SEX性别举例
//可以一一列举的值,性别,三原色
enum Sex
{
	//枚举的可能取值
	MALE=3,//赋初值
	FEMALE=8,
	SECRET//向后延一个为9
};
int main()
{
	//FEMALE = 99;//ERR 枚举变量值不可修改
	enum Sex a=MALE;
	enum Sex s = FEMALE;
	printf("%d\n", MALE);
	printf("%d\n", FEMALE);
	printf("%d\n", SECRET);
	return 0;
}

字符串+转义字符+注释

字符串

被单引号引起来的,如'w','r'是字符,被双引号引起来的"yyx","abcdef"是字符串。字符串一般以'\0'结尾隐含在字符串的末尾。既然'\0'为字符串结束标志,在计算字符串长度时当然不算作字符串内容。

//字符,字符串
int main()
{
	//'a', ' ' , 'X' - 字符
	//"abc"   "123" - 字符串
	//"abcdef"; //字符串字面值
	//①
	char ch1[] = "abcdef";//初始化字符数组
	//a ,b ,c ,d ,e ,f ,\0  
	//%s - 打印字符串
	//strlen - 打印字符串长度,(遇\0则停止,本身不算)\0是字符串结束标志
	printf("%s\n", ch1);	
	//abcdef 
	printf("%d\n", strlen(ch1));//6
	//②
	char ch2[] = { 'a','b','c','d','e','f' };
	//a ,b ,c ,e ,f  
	printf("%s\n", ch2);
	//abcdef烫烫烫烫烫abcdef
	printf("%d\n", strlen(ch2));//22,找不到\0
	//③
	char ch3[] = { 'a','b','c','d','e','f','\0' };
	//a ,b ,c ,d ,e ,f ,\0
	printf("%s\n", ch3);
	//abcdef
	printf("%d\n", strlen(ch3));//6

	return 0;
}

转义字符

有防止单引号,双引号,反斜杠被转移的' \' ' , ' \" ',' \\ ' 。警告,蜂鸣的' \a ' ,退格符' \b ',进纸符' \f ',换行符' \n ',回车符' \r ',水平制表符' \t ',垂直制表位' \v ',八进制数字' \ddd ',十六进制数字' \xdd ' 。

#include <stdio.h>
int main()
{
	printf("c:\code\test.c\n");//c:code  est.c
	printf("c:\\code\test.c\n");//c:\code  est.c
    //单个\是转义序列符,但这里又没有\c的转义字符,所以系统自动忽略该\
	//想要出现该\,则必须要搭配两个\\,防止其被转义

	return 0;
}
// \?
//三字母词 
// ??) --> ]   ??( --> [
//\' \"																			
int main()
{
	printf("%c\n", 'a');
	printf("%c\n", 'b');
	printf("%c\n",'\'');//在'前面加上\,以单纯的将其视为字符'
	printf("%s\n", "\"");// \"
	return 0;
}
//\a \b \f \v \t \n \r
//\ddd八进制数字  \xdd十六进制数字
int main()
{
	printf("%c\n", '\165');
	//打印八进制数字065转化为十进制数字53所代表的字符(ASCII码)
	printf("%d\n", '\165');
	//打印八进制数字065转化为十进制数字53
	printf("%c\n", '\x15');
	printf("%d\n", '\x15');//21
	return 0;
}

两种注释

C++的风格 //xxxxx ,这种只能注释一行。C语言的风格 /*xxxxx*/ ,不可嵌套注释。

选择循环语句

选择语句,实现分支。具体情况为 if ( 条件 ) { 语句 } else ( 条件 ) { 语句 };循环语句,有while循环,do...while循环和for循环。

int main()
{
	int i = 0;
	printf("加入比特\n");
	printf("要好好敲代码吗(1/0)?\n");
	scanf("%d", &i);
	if (i == 1)
	{
		printf("好offer\n");
	}
	else
	{
		printf("药丸\n");
	}
	return 0;
}
int main()
{
	int line = 0;
	printf("加入比特\n");
	while (line<20000)
	{
		printf("敲%d了代码\n",line);
		line++;
	}
	printf("牛逼坏了拿到了好offer\n");
	return 0;
}

函数

函数主要传参和返回值的类型要对应

int ADD(int num1, int num2)
{
	scanf("%d %d", &num1, &num2);
	int sum = num1 + num2;
	return sum;
}
int main()
{
	int num1 = 0;
	int num2 = 0;
	输入
	//scanf("%d %d", &num1, &num2);
	相加
	//int sum = num1+num2;
	输出
	//printf("sum=%d\n", sum);
	
	//int output = ADD(num1,num2);
	//printf("%d\n", output);
	printf("%d\n", ADD(num1, num2));

	return 0;
}

数组

定义是一组相同类型的元素组成的集合,数组的使用是根据下标来的,从0开始数。

int main()
{
	//数组 - 相同元素的集合
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%3d", arr[i]);
	}
	printf("\n");
	for (i = 9; i >= 1; i--)
	{
		printf("%3d", arr[i]);
	}
	return 0;
}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注猪先飞的更多内容!

[!--infotagslink--]

相关文章

  • C语言实现放烟花的程序

    这篇文章主要为大家详细介绍了C语言实现放烟花的程序,有音乐播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-23
  • C语言中的字符(char)详细讲解

    本篇文章主要介绍C语言中char的知识,并附有代码实例,以便大家在学习的时候更好的理解,有需要的可以看一下...2020-04-25
  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • photoshop画斜线/直线/虚线的入门级教程

    这篇文章算是超级入门级别的了,我们下面来给各位介绍在photoshop画斜线/直线/虚线的教程了,希望下面这篇文章给你入门来帮助。 PS怎么画斜线 选择铅笔工具,或者画笔...2016-09-14
  • 详解如何将c语言文件打包成exe可执行程序

    这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • C语言中计算正弦的相关函数总结

    这篇文章主要介绍了C语言中计算正弦的相关函数总结,包括正弦和双曲线正弦以及反正弦的函数,需要的朋友可以参考下...2020-04-25
  • 详解C语言中的rename()函数和remove()函数的使用方法

    这篇文章主要介绍了详解C语言中的rename()函数和remove()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
  • C语言中求和、计算平均值、方差和标准差的实例

    这篇文章主要介绍了C语言中求和、计算平均值、方差和标准差的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-10
  • C语言的基本语法详解

    本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...2021-09-18
  • 20分钟MySQL基础入门

    这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • C语言中send()函数和sendto()函数的使用方法

    这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
  • C语言实现从文件读入一个3*3数组,并计算每行的平均值

    今天小编就为大家分享一篇C语言实现从文件读入一个3*3数组,并计算每行的平均值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
  • PHP安装threads多线程扩展基础教程

    一、下载pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads二、判断PHP是ts还是nts版通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说...2015-11-24
  • C语言中memcpy 函数的用法详解

    这篇文章主要介绍了C语言中memcpy 函数的用法详解的相关资料,需要的朋友可以参考下...2020-04-25
  • 使用C语言操作文件的基本函数整理

    这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下...2020-04-25
  • 编程新手必须掌握的:session与cookie的区别

    session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
  • C语言中查找字符在字符串中出现的位置的方法

    这篇文章主要介绍了C语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下...2020-04-25
  • C语言菜鸟基础教程之a++与++a

    很多同学在学习c语言的时候是不是会碰到a++和++a都有甚么作用啊。今天我们就来探讨下...2020-04-25
  • 详解C语言中const关键字的用法

    这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25