暑期实践第三天——Linux下的C语言(数组篇)

没了VC/Dev的缩进以及代码补全功能,使用Linux下的vim开始写C程序真的有些吃不消,但是究其根本就会发现其实我们之所以觉得吃不消,应该是我们本能地害怕改变习惯造成的,一旦我们习惯了vim下的编写方式我们就也会慢慢习惯。

当然,为了解决这种过渡问题,Linux下提供了一个名为.vimrc的配置文件,我们可以通过更改配置文件来增加缩进与代码补全功能以及其他行号显示与高亮等功能。

但是对于新手来说,配置文件修改已知配置文件简直难于上青天,于是我们可以在网上搜寻资源,一番寻找之后,终于找到了一个令我满意的配置文件~QAQ

原先想给出下载地址,因担心被吞,就下面给出本次配置文件的代码截图(还是经过本人的悉心整理的),供大家参考使用:

************************************************************************************************************

解决了配置问题,是时候回顾今天所学习的内容了:

一:首先,承接昨天的Linux指令,今天额外补充了一些Linux指令以便于接下来的操作:

  • 文件权限修改指令:chmod a-w/r/x 文件名 (如果需要添加权限将前方的-换成+即可,如果想一步赋予全部权限则需要在a-w/r/x那里输入777即可完成要求功能);
  • 查看本机ip地址指令:ifconfig -a  该指令可以方便虚拟机连接终端模拟软件Xshell上实现更好的编写环境配置;

二:接下来就是程序编译的细致讲解:

  • 用法:gcc  选项  参数
  • 默认可执行程序名为a.out
  • 选项:-o 文件名 指定可执行程序名字      将编译内容写进新文件
              -Wall (warning list list)            显示所有警告错误
              -I(大写字母i)  文件路径             指定包含头文件路径
              -L  文件路径                                 指定使用的库文件路径
              -I 指定引用的库文件名                  指定引用的库
              -g 选项为生成调试信息,若要使用GDB进行程序调试,编译时必须使用-g选项
  • 如果一个程序中含有main.c fun1.c fun2.c
              在编译过程中可以使用以下指令(以下是实例):
              [Nirotto@localhost Code]$ gcc -o main -Wall  -g main.c  fun1.c fun2.c
              
              [Nirotto@localhost Code]$ gcc -o my003 -Wall -g -std=c99 my003.c(这里的-std=c99是对编译标准所进行的一个说明,因为有些代码格式在C89中并不支持,必须要在C99中才可以实现)

              [Nirotto@localhost Code]$ gcc -o my002  my002.c -Wall -static -lm(不指定默认是动态库,如果需要指定为静态库要在前面加上-static)

  • 关于库:

    •  libm.so   动态库:代码所占空间小
       libm.a     静态库:编译时直接将库函数封装进程序,所占空间较大
       libxyz.so    自定义库

三:对C语言进行基本到数组的复习与回顾(主要记了一些自己在一学期中不熟悉的一些知识点):

  • C语言数据类型:
    基本数据类型:整形/浮点型/字符型/枚举/指针
    空类型:void
    符合数据类型:数组/结构体/联合体
  • 指针数组:
    指向数组的指针:int (*p)[10]
    指针数组:int p[10]

四:额外部分之Linux内部程序都是使用C语言编写的:

实例:
[Nirotto@localhost Code]$ which cp
/bin/cp
[Nirotto@localhost Code]$ file /bin/cp
/bin/cp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[Nirotto@localhost Code]$ file /home/Nirotto/Code/my001
/home/Nirotto/Code/my001: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

五:练习部分
1.不借助第三个变量,实现两个变量的交换。
2编程实现整型一维数组排序(冒泡排序、改进冒泡排序)
3.二维数组实现矩阵A、B乘积。
4.二维数组的行指针、列指针遍历数组。
5.递归方法求1的阶乘到N的阶乘之和。

第一题:(通过数学中的点点间距离考虑可以成功实现在不借助第三方的情况下完成交换)

第二题:

第三题:

第四题:

第五题:

以上程序如果有问题应该是个人理解出现了问题,但是均经过了正确的运行的~QAQ

****************************************************************************************************************

今天又是一个充实的一天,老师讲课还以一如既往的快,但是发现自己也已经习惯了(哦嘿嘿~)

下面这张图在前些日子看到时内心还是满满的不知所措,但现在却觉得自己却和它有一种自己都无法理解的亲切感。

忙碌的日子是快乐的!加油!

猜你喜欢

转载自blog.csdn.net/qq_42292831/article/details/81105800