> 文档中心 > 初识C语言(1)

初识C语言(1)

文章目录 

一、什么是C语言 

二、第一个C语言程序

三、数据类型

四 、变量常量

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

前言

我也是才学习C语言,所以文中有什么错误之处,望大家能及时批评指正,很期待和大家一起相互学习,相互交流。之后我也会陆续将我学习的一些方法和心得以博客的方式呈现出来,希望大家能多多关注。蟹蟹!


声明:首先我们的来梳理一下C语言的大概内容,对C语言有一个大概的了解。所以文中有些内容只是点到为止,不做深究,后期会一一剖析。

下文中所有程序代码都是在visual studio 2019中运行的。

一、什么是C语言

 

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

  C语言有着良好跨平台的特性,以一个标准规格写出的C语言程序可在多个电脑平台上进行编译,甚至包含一些嵌入式处理器,以及超级电脑等作业平台

  二十世纪八十年代,为了避免各个开发厂商的C语言语法产生差异,由美国国家标准为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准组织(ISO)和国机电工委员会(IEC)发布的C11

  C语言是一门面向过程的计算机编程语言,与c++,Java等面向对象的编程语言有所不同。C语言的主要编译器有Clang、GCC、MSVC、WIN-TC、SUBLIME、Turbo C

二、第一个C语言程序

代码如下:

#include int main(){    printf("hello world!\n");    printf("he he\n");    return 0;}//解释://main函数是程序的入口//一个工程中main函数有且仅有一个

程序运行结果如下:


三、数据类型 

C语言中常见的数据类型有以下几种:

数据类型 类型大小/byte
char 字符数据类型 1
short 短整型 2
int 整型 4
long 长整型 4
long long 更长的整型 8
float 单精度浮点数 4
double 双精度浮点数 8
#include 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;}//sizeof是C/C++中的一个操作符(operator)//简单的说其作用就是返回一个对象或者类型所占的内存字节数。

visual studio 2019中32位编译环境下运行的结果如下:

● 存在这么多的数据类型,其实是为了更加丰富的表达生活中的各种值。


四、变量、常量

在我们的实际生活中,有些值是不变的,有些值是可变的。不变的值C语言中用常量的概念来表示,可变的值C语言中用变量来表示。

4.1 定义变量的方法

int age = 150;float weight = 45.5f;char ch = 'w';

4.2 变量的分类

● 局部变量

● 全局变量

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

4.3 变量的使用

#include int main(){    int num1 = 0;  //对变量进行初始化   int num2 = 0;    int sum = 0;    printf("输入两个操作数:>");    scanf("%d %d", &num1, &num2);    sum = num1 + num2;    printf("sum = %d\n", sum);    return 0;}

程序运行结果如下:

 4.4 变量的作用域和生命周期

作用域

作用域是程序设计的概念,通常来说。一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

1.局部变量的作用域是变量所在的局部范围。

2.全局变量的作用域是整个工程。

生命周期

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

1.局部变量的生命周期是:进入作用域生命周期开始,出作用有生命周期结束。

2.全局变量的生命周期是:整个程序的生命周期。

4.5常量

C语言常量分为以下几种:字面常量、const修饰的常变量、#define定义的标识符常量、枚举常量.

#include int main(){//字面常量99;3.14;"bcd";'a';//const 修饰的常变量//虽然下面的num是不能被修改的,但本质上还是一个变量const int num = 10;printf("num = %d\n", num);//10num = 20;printf("num = %d\n", num);//20//数组的概念//int arr[100] = {0};//const int n = 100//int arr[n] = {0};  //这里的n不能为变量//C99标准中,是支持变长数组,允许变量来指定数组大小return 0;}
//#define 定义标识符常量//一般习惯大写#include #define MAX 100int main(){int a = MAX;    int arr[MAX]; //说明MAX是常量printf("%d\n", a);return 0;}

程序运行结果如下:

//枚举常量//枚举- 一一列举//生活中有些值是可以一一列举的,但有些值不合适一一列举//定义枚举类型#include enum Sex{//枚举这种类型的可能取值-就是枚举常量MALE,FEMALE,SECRET};int main(){//enum Sex s = MALE;printf("%d\n", MALE);printf("%d\n", FEMALE);printf("%d\n", SECRET);//MALE = 10; //这是错误的,因为MALE是常量return 0;}

程序运行结果如下:

注意:枚举常量的默认是从0开始,依次向下递增1的。


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

5.1字符串

用双引号引起的一串字符称为字符串字面值,或者简称字符串。

注意:字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串内容。C语言中字符串没有字符串类型

#include int main(){    char ch = "abc"      //这是错误的,因为ch是一个字符变量,它里面只能存一个字符    //可以把字符串放在字符数组中    char arr1[] = "bit";  //字符串    char arr2[] = {'b', 'i', 't'};  //字符串没有以‘\0’作为结束标志//所以在打印出bit后会打印一些随机值直到遇到‘\0’结束    char arr3[] = {'b', 'i', 't', '\0'};    printf("%s\n", arr1);    printf("%s\n", arr2);    printf("%s\n", arr3);    return 0;}

程序运行结果如下:

● 通过调试可以看出,字符串的末尾其实隐藏一个'\0',所以'\0'是字符串的结束标志。

#include int main(){char arr1[] = "abc";char arr2[] = { 'a','b','c' };printf("%d\n", strlen(arr1));   //strlen   //string length - 求字符串长度的函数    printf("%d\n", strlen(arr2));  //arr2数组中没有出现‘\0’,所以它的结果是一个随机值  return 0;}

程序运行结果如下:

● strlen在求字符串长度时,只统计在‘\0’之前出现多少个字符

5.2转义字符

假设我们想在屏幕上打印一个目录:d:\code\test.c\n

1.#include int main(){printf("d:\code\test.c\n");return 0;}2.#include int main(){printf("d:\\code\\test.c\\n");return 0;}

实际上代码的结果是这样的:

修改后,代码2运行的结果才是我们想要的,如下图:

 

  以上结果就是因为转义字符的作用而导致的。转义字符顾名思义就是转变意思。具体的来讲,就是所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

字符表

转义字符

释义

\a

警告字符,蜂鸣

\b

退格,将当前位置移到前一列

\f

换页,将当前位置移到下页开头

\n

换行 ,将当前位置移到下一行开头

\r

回车,将当前位置移到本行开头

\t

水平制表 (跳到下一个TAB位置)

\v

垂直制表

\\

代表一个反斜线字符''\'

\'

代表一个单引号(撇号)字符

\"

代表一个双引号字符

\?

代表一个问号      在书写连续多个问号时使用,防止他们被解析成三字母词          

\0

空字符

\ddd

1到3位八进制数所代表的任意字符  如: \130 X

\xhh

十六进制所代表的任意字符  如: \x30 0

#include int main(){    printf("%d\n", strlen("abcdef"));    // \62被解析成一个转义字符    printf("%d\n", strlen("c:\test\628\test.c"));    return 0;}

运行结果如下:

注://??)  是三字母词会被转义为 ]

5.3注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉。
2. 代码中有些代码比较难懂,可以加一下注释文字。

注释有两种风格:
 ● C语言风格的注释 /*xxxxxx*/
 ● 缺陷:不能嵌套注释;
 ● C++风格的注释 //xxxxxxxx
 ● 可以注释一行也可以注释多行;


总结

以上就是今天要讲的内容,后续内容请移步初识C语言(2)。觉得可以的话,希望可以点个赞鼓励俺一下,非常感谢,哈哈!