初识c语言(上)

简介: 初识c语言(上)

背景

C语言是一种通用的高级程序设计语言,由美国计算机科学家丹尼斯·里奇(Dennis Ritchie)在20世纪70年代开发出来。C语言的设计目标是提供一种灵活、高效的语言,可用于开发各种应用程序,尤其是系统软件和嵌入式系统。

C语言被广泛应用于操作系统、编译器、数据库、网络协议以及游戏开发等领域,它具有高效的性能、可移植性和灵活性,成为软件开发领域的重要工具。

C语言的定义是通过一系列的语法规则和语义规范,描述了程序的结构和行为。它使用了一套简洁明确的语法和标准函数库,提供了丰富的数据类型、运算符、控制语句和库函数,使得程序员可以高效地编写程序。

以下是C语言的一些基本概念:

  1. 变量和数据类型:C语言支持多种数据类型,如整数、浮点数、字符等,程序员可以声明变量并给其赋值。
  2. 运算符和表达式:C语言提供了丰富的数学运算符和逻辑运算符,可以进行各种计算和表达式求值。
  3. 控制流程:C语言提供了条件语句(如if-else语句和switch语句)和循环语句(如for循环和while循环),用于根据条件执行不同的代码块或循环执行特定的代码块。
  4. 函数:C语言允许程序员定义自己的函数,以模块化和重复使用代码,提高代码的可读性和可维护性。
  5. 指针:C语言支持指针,允许程序直接操作内存地址,可以用于高效地处理数组,访问函数参数,以及动态分配内存等。
  6. 结构体:(Structure)是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起,形成一个新的数据结构。结构体可以包含多个成员变量,每个成员变量可以是不同的数据类型。
  7. 文件操作:C语言提供了一组文件操作函数,可以读写文件,并进行文件的打开、关闭、读取和写入等操作。
  8. 预处理器:C语言使用预处理器指令,可以在编译前进行宏替换、条件编译和文件包含等预处理操作。

总的来说,C语言具有简洁的语法、高效的执行速度和强大的编程能力,是学习计算机编程和系统级开发的重要基础。

发展历程

C语言的发展历程可以追溯到20世纪70年代早期。以下是C语言的主要发展里程碑:

  1. 1969年-1973年:贝尔实验室的丹尼斯·里奇(Dennis Ritchie)与肯·汤普逊(Ken Thompson)合作开发了Unix操作系统。为了在Unix上编写系统软件,他们创造了B语言,它是一种高级的类似汇编的语言。
  2. 1972年-1973年:丹尼斯·里奇开始改进B语言,并在此基础上开发出了C语言。C语言是通过重写Unix操作系统的内核,使用C语言编写的第一个版本。C语言相比于B语言具有更好的可移植性和表达能力。
  3. 1978年:布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇共同合著了《The C Programming Language》一书,该书成为C语言学习指南的经典之作。该书的出版推动了C语言的普及和流行。
  4. 1983年:美国国家标准协会(ANSI)发布了《ANSI C标准》,定义了C语言的规范和标准化,称为ANSI C或C89。这一标准的制定促进了C语言的统一和跨平台的发展。
  5. 1989年:国际标准化组织(ISO)发布了《ISO C标准》,该标准也被称为C90或ISO C。与ANSI C相比,ISO C进行了一些修正和扩展,并加入了一些新特性,如函数原型和void指针等。
  6. 1999年:ISO发布了C语言的第三个标准,称为C99。C99增加了一些新特性,如内联函数、可变长度数组、单行注释等,进一步提升了C语言的功能和表达能力。
  7. 2011年:ISO发布了C语言的最新标准,被称为C11。C11引入了一些新的特性,如多线程支持、泛型宏、匿名结构体等,进一步改进了C语言的功能和灵活性。

除了标准化的发展,C语言还受到了许多编译器和开发工具的支持,如GNU C编译器(GCC)和Microsoft Visual C++等。这些工具提供了强大的开发环境和丰富的库函数,进一步促进了C语言的推广和应用。

总体而言,C语言凭借其高效性、可移植性和灵活性,成为广泛应用于系统开发、嵌入式系统、网络协议、游戏开发等领域的重要编程语言。同时,C语言也为后续的编程语言,如C++、Java等的发展奠定了基础。

本篇内容

本篇内容会带大家简单认识一下c语言,后续会有更加详细的c语言文章来呈现给大家。

第一个c语言程序

#include<stdio.h>
//main是一个固定的名字
//main是主函数,是程序的入口,一个工程中有且只能有一个
//这里的int是整型
int main()
{
  //printf是C语言的一个库函数,它的功能是打印内容在屏幕上
  printf("Hello World");
  //return 是返回
  return 0;
}
//需要注意的是我们缩写的代码使用的符号都必须是英文的

#include的意义

在C语言中,#include是一个预处理指令,它的作用是包含C标准库中的stdio.h头文件。头文件是一种包含函数原型、宏定义和类型声明的文件,它提供了一些常用的输入输出函数和相关的定义,如printf、scanf和文件操作函数等。

使用#include指令可以告诉C编译器在编译过程中将stdio.h头文件的内容插入到当前代码文件中。这样,程序就可以使用stdio.h中定义的函数和常量了。

具体来说,stdio.h头文件包含了与标准输入输出(Input/Output)相关的函数和定义。例如,其中定义了printf函数用于输出格式化的数据到屏幕上,以及scanf函数用于从标准输入获取数据。此外,stdio.h还包含了有关文件输入输出的函数和常量,如fopen、fclose、FILE等。

通过包含,程序可以利用stdio.h中定义的函数来完成常见的输入输出操作,同时减少了重复编写这些函数原型和常量定义的工作。

需要注意的是,是C语言标准库的头文件之一,头文件的名称和内容可能因不同的编译器和操作系统而有所差异。因此,编写C程序时,通常需要根据编译环境的不同来使用适当的头文件。

总结起来,#include的意义是通过包含stdio.h头文件,使得程序可以使用其中定义的常用输入输出函数和相关定义,方便进行输入和输出操作。

而在该代码中的作用仅仅是printf函数的头文件(包括但不限于printf函数),#include的方式包含了这个头文件。

其他方式的写法

#include<stdio.h>
void main()
{
  printf("Hello World!");
}

与第一种的区别:

int main()形式:

第一种:返回值类型为int,表示主函数的返回值。主函数的返回值通常用于向操作系统报告程序的执行状态,约定俗成的规定是返回0表示程序成功执行,非零值表示执行出错。

可以使用return语句来返回整数值,如return 0;。

void main()形式:

返回值类型为void,表示主函数没有返回值。

不允许使用return语句来返回值,因为主函数被声明为void类型,不能返回值。

在某些编译器中,可以使用exit(0);来替代return 0;来表示程序执行成功并退出,但这是非标准的用法。

总结:

在大多数C编译器中,int main()形式是主函数的标准形式,被广泛接受并被C语言标准所推荐。使用int main()形式的好处是可以明确地返回程序的执行状态,并且符合C语言标准的规定。
而void main()形式主要是对历史遗留的一种写法,某些编译器可能仍然支持它。但请注意,根据C语言标准,void main()形式是不被推荐使用的。推荐的做法是使用int main()形式,并在程序结束时返回一个合适的整数值。

2

#include<stdio.h>
int main(void)
{
  printf("Hello World!");
  return 0;
}

这种与第一种的不同在于其中void表示main函数不接受任何的参数。


#include<stdio.h>
int main(int argc, char* argv[])//其中int argc, char* argv[]表示main要接受的参数
{
  printf("Hello World");
  return 0;
}

这种形式的主函数接受两个参数:

argc(argument count)表示命令行参数的数量,包括程序名称本身。至少为1。

argv(argument vector)是一个指向字符指针的数组,每个指针指向一个命令行参数的字符串。

这种形式的主函数通常用于接受命令行参数,并根据参数来进行不同的操作或处理。

数据类型

sizeof

在C语言中没种数据类型所占的空间大小是不一样的,在这里给大家介绍一个库函数: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;
}

运行结果:

从图中我们可以看出他们所占空间的大小各有差异,在这里需要解释一下的sizeof算出的是byte(字节)大小,具体的单位换算如下:

bit

1byte=8bit

1KB=1024byte

1MB=1024KB

1GB=1024MB

至于为什么long 和 int 所占的空间大小一样,在c语言中它们的大小关系有下列的表述:

long long >= long >= int > short >char

目录
相关文章
|
3天前
|
Java 编译器 程序员
C语言 (3)
C语言 (3)
16 0
|
3天前
|
自然语言处理 编译器 C语言
C语言:练习
C语言:练习
23 0
|
7月前
|
Linux 编译器 C语言
C语言必知必会
C语言必知必会
52 0
|
3天前
|
程序员 C语言
C语言
C语言
13 0
|
3天前
|
C语言
C语言中%c,%d,%x,%f,%4.2f分别是什么
C语言中%c,%d,%x,%f,%4.2f分别是什么
|
5月前
|
存储 编译器 C语言
初识C语言(3)
初识C语言(3)
48 0
|
9月前
|
存储 Java 编译器
初识c语言(一)
初识c语言(一)
90 0
初识c语言(一)
|
9月前
|
存储 Java 编译器
初识C语言(一)
初识C语言(一)
|
10月前
|
C语言
C语言假期作业 DAY 06
C语言假期作业 DAY 06
|
11月前
|
C语言 C++
C语言的那些少见的事
C语言的那些少见的事