C语言初期学习感悟
学习C语言初期,我感受到了它的简洁和高效。尽管有些语法规则和概念对我来说比较陌生,但通过不断的练习和实践,我逐渐理解了其中的原理和应用。我发现C语言的结构化编程使得程序更加清晰和易于维护,而且它的底层特性让我可以更深入地理解计算机的工作原理。虽然学习过程中遇到了一些困难,但坚持下来后我感到很有成就感,也为未来深入学习编程打下了坚实的基础。
C语言的发展过程
语言诞生于20世纪70年代,由贝尔实验室的Dennis Ritchie开发。在那个时候,贝尔实验室正在开发一个新的操作系统,这个操作系统后来被称为UNIX。为了方便开发和移植UNIX系统,Ritchie创造了C语言。
在此之前,贝尔实验室使用的主要编程语言是汇编语言,但它比较低级且与硬件相关,导致编写和维护大型软件非常困难。因此,Ritchie决定设计一种更高级、更可移植的语言。
他在设计C语言时参考了早期的编程语言(如ALGOL、BCPL),并将其与汇编语言的灵活性相结合。这样,C语言就成为一种介于高级语言和低级语言之间的语言,可以同时实现高效的程序控制和方便的软件开发。
1972年,Dennis Ritchie发布了第一个C语言编译器,称为"CC"(C Compiler),并开始用C语言重写UNIX操作系统。这使得UNIX系统能够在不同的硬件平台上移植和运行,极大地促进了UNIX的普及和发展。
随着时间的推移,C语言逐渐成为最流行的编程语言之一。它在系统软件、嵌入式系统、游戏开发等领域得到广泛应用,影响了后来其他编程语言的设计和发展,如C++、Java等。
总的来说,C语言的诞生源于对操作系统开发和编程效率的需求,它的简洁性、可移植性和灵活性使其成为广泛使用的编程语言,并对计算机科学产生了深远的影响。在这里插入代码片
C语言跟世界打的招呼
#include <stdio.h>
int main()
{
printf("hello world");
return 0;
}
``
```c
在这里插入代码片
这就是计算机跟人类打的第一声招呼,从此C语言的故事一直在延续。
C语言的基础知识
使用linux虚拟机
进入家目录
打开虚拟机后绝大部分的操作都是在家目录下进行的
首先要 cd ~ cd(choose directory)~代表加目录;cd ~ 则代表进入到家目录下,命令在家目录下进行操作
vim 一个1.c的文件,此时进入到文件内部进行编译。
进入到文件内部进行代码书写,上图代码可以代表一个万能框架。写C语言内容之前可以先将框架写出来
写完之后 ctrl shift + n 可以打开另一个同类型的窗口 此时gcc 1.c 提取文件
./a.out对本文件进行执行
计算机识别了你所写的语言 并进行了输出。
C语言有难度的地方
指针 数组
初看标题可能觉得他们很绕口,不过慢慢习惯之后也就能大致理解他们的意思
指针 定义式为: int *p = NULL;
数组 定义式为: int arr[5] = {0}; 这个数组共包含五个元素。当其中的五个元素都初始化为零。
指针数组 和 数组指针
指针数组:本质还是一个数组,不过数组里面存放的元素是指针,指针存放的是地址。定义式 int * arr[5] arr数组里面有五个元素,每个元素里面都存放着一个地址。
数组指针: 是指还是指针,指针指向数组
定义式: int (*p)[5] = ;
定义了一个数组指针p,该指针指向一个拥有5个int类型元素的一维数组
(该指针可以保存一个拥有5个int类型元素的一维数组的地址)
p先和谁结合:本质就是谁
p先和结合:定义的本质就是指针
p先和[]结合:定义的本质就是数组
注意:[ ]的优先级高于
const的作用
不能直接修改a的值;
未const之前 a的值可以通过地址的改变而间接改变,也可以通过修改a的值而直接修改;但是被const修饰之后,变量a的值只能在固定的地方且不能被修改
main函数传参
1.不带参数的形式:int main(void)
这种形式表示main函数没有接受任何参数,可以直接使用。
- 带参数的形式:int main(int argc, char *argv[])
这种形式表示main函数接受两个参数,分别是整数类型的argc和字符指针数组类型的argv。其中,argc表示命令行参数的个数,包括程序名称本身。argv是一个指针数组,每个元素指向一个字符串,表示相应的命令行参数。
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("命令行参数个数:%d\n", argc);
for (int i = 0; i < argc; i++) {
printf("参数 %d: %s\n", i, argv[i]);
}
return 0;
}
未完待续
10天的C语言学习暂时告一段落,初接触的陌生到现在的熟悉,但是还并未完全掌握。前面的课程还需要在复习复习整合整合。这个梳理会一直写下去的,今天先更新到这里…