C语言基础

01

Liunx相关命令

1.1 mv:移动,剪切命令

    命令格式:


               mv 源文件 目标文件 作用:剪切成新文件

                

                mv 源文件 目标目录下 作用:剪切到制定目录里面去

                

                mv 源目录 目标目录 作用:剪切成新目录

                

                mv 源目录 目标目录下作用:剪切到制定目录下

小案例:演练mv

mdir -p /home/tarena/mvtest
cd /home/tarena/mvtest
mkdir -p hello   在当前目录下创建hello目录
touch hello.txt  在当前目录下创建空文件
ls -lh 查看当前目录下所有文件和目录的详细信息
mv hello.txt hellol.txt 重命名
ls -lh
mv hellol.txt hello 把hello.txt 剪切到hello目录里面去
ls -lh
ls -lh hello/
mkdir -p hello2
mv hello2 hellol/   把hello2目录移动到hello1目录里面去
ls -lh
ls -lh hello2

1.2 whoami

    查看当前登录linux系统的用户名


    格式:whoami

1.3 cat

       快速查看文件内容


   格式:cat 文件名

例如:
cat home/tarena/hello.txt
cd /usr/include
cat stdio.h

1.4 echo

    打印命令,向显示屏打印信息  


    格式:echo 打印信息

例如:echo 我是大神
注意:echo
命令一般会配合’>‘或者’>>'一起使用
格式:echo 打印信息 > 文件名
功能: 将打印信息保存到文件中,如果文件有内容,会将原先的内容清楚,把新内容保存里面
echo 打印信息 >> 文件名
功能: 将打印信息保存到文件中,把新内容添加到文件的尾部,文件原来内容保持不变
echo:sudo /home/tarena/hello.txt
echo 我是大神 > hello.txt
cat hello.txt
echo 我是小森 > hello.txt
cat hello.txt
echo 我是大神 >> hello.txt
car hello.txt
echo 你是谁啊 >> hello.ttx
cat hello.txt

1.5 find

    查找文件命令 


    格式:find 路径 -name 文件名 


    语义:到指定的路径下找一个名称为name的文件

例如: find /usr/include -name stdio.h
cd /home/tarena
find . -name hello.txt

1.6 grep

    在文件中搜索关键字


    格式:grep -Rn "关键字" 文件名

    

  例如: 
    touch /home/tarena/hello.txt
    echo 我是大神 > hello.txt
    echo 我是大神 >> hello.txt
    echo 我是大神 >> hello.txt
    echo abcdefg >> hello.txt
    cat hello.txt
    grep -Rn "cde" hello.txt   在hello.txt 中搜索关键字cde

1.7 tar

    linux系统制作压缩包和解压缩命令

    

    记住以下三条终极命令:

// 制作压缩包两条命令:
tar -jcvf 压缩包名.tar.bz2 目录或者文件
作用:把目录或者文件制作成bz2格式的压缩包
tar -zcvf 压缩包名.tar.gz 目录或者文件
作用:把目录或者文件制作成gz格式的压缩包
// 解压缩命令一条:
tar -xvf 压缩包名.tar.bz2或者压缩包名.tar.gz 结果:生成目录或者文件

小案例:演练打包和解包

  mkdir -p /tarena/tartest/
  cd /tarena/tartest/
  touch hello.txt
  echo 123456 > hello.txt
  cd ..   进入上一级目录
  tar -jcvf tartest.tar.bz2 tartest
  tar -zcvf tartest.tar.gz tartest
  ls -lh tartest.tar.bz2
  ls -lh tartest.tar.gz
  rm -rf tartest
  tar -xvf tartest.tar.bz2 tartest
  ls -lh tartest
  cat tartest/hello.txt
  rm -rf tartest
  tar -xvf tartest.tar.gz tartest
  ls -lh

02

Vim编辑器

2.1 创建的编辑器

    vim,  vscode,  sublime, eclipe等等

2.2 vim编辑器对应的命令:vim

    格式:vim 文件名


    语义:打开新建文件

2.3 vim三种模式:可视模式,编辑模式,命令行模式

    vim 默认模式是可视模式


    编辑模式: 可以修改


    命令行模式:可以给vim发送控制命令

2.4 三种模式的切换

可视模式------->按i键------>编辑模式


编辑模式------->按ESC------>可视模式


如果现在是可视模式------>按shift加:------->命令行模式


命令行模式------>ESC------->可视模式

2.5 vim命令行模式下的相关命令:

    w:保存文件


    q:不保存退出


    wq:保存退出vim命令


    q!:强制退出

    

    %s/老信息/新信息/g:  字符串替换,将文件中所有的老信息用新信息替换


                例如:

%s/我是大神/whoani/g 将文件中所有的我是大神这四个字替换成whoami

    直接输入行号:让光标直接跳转到制定行号


    vs 文件名:左右分屏,这样可以同时编辑两个文件


    sp 文件名:上下分屏,这样可以同时编辑两个文件


    注意:屏幕之间切换的快捷键:ctrl+ww

2.6 vim可视模式下的相关快捷键

    1)光标移动快捷键:h(左移), j(下移), k(上移), l(右移) 



    2)行选中:shift+v然后移动光标选中那个



    3)列选中:ctrl+v 然后移动光标



    4)复制:Y



    5)粘贴:P



    6)剪切:X



    7)取消:U



    8)跳转到文件的尾部:G



    9)跳转到文件的开头:gg



    10)保存并且退出vim:ZZ



    11)自动补全:ctrl+n(注意:前提是先进入编辑模式,然后怓某个单词的开头字母,然后发现有多个相同开头的单词,根据需求选中一个即可

03

C语言编程基础

3.1. c语言功能:类似英语

3.2.编写第一个C语言程序

具体实施步骤:
mkdir -p /home/tarena/stdc/day02
cd /home/tarena/stdc/day02
vim helloworld.c 添加如下内容

/*
这是我的第一个C语言程序
我很激动
*/
// 这个仅仅作为一个测试
#include <stdio.h>

int main(void)
{
printf(“你好,世界”)
printf(“hello,world\n”);
return 0;
}
保存退出
继续执行一下命令
gcc helloworld.c 作用:编译程序
ls -lh 此时多了一个a.out文件
./a.out 作用:运行a.out程序

3.3.总结C程序基本编程规范

    a)	C程序对应的文件有两种形式:

                

                1.源文件:以.c结尾,例如:helloworld.c


            2.头文件:以.h结尾,例如:stdio.h


	       任何C程序都必须有一个源文件,头文件可以有,可以没有


    b)	C程序的注释有两种形式

                (就是程序代码的解释说明,给程序员看,不参与程序的编译和运行)有两种:


        /*中间就是要解释说明的*/


        优点:可以注释多行


        缺点:不能嵌套注释,例如:/*我是大神/*我是小神*/*/(这种是错误的)



        // 后面跟要注释的内容


        优点:可以嵌套注释


        缺点:不能多行注释



    c)  C程序要包含一个别人写好的头文件(就是将头文件的内容全部拷贝过来),包含头文件的方法有两种:


            1. 语法:#include <头文件名>


               例如:  #include <stdio.h>


               语义:告诉gcc编译器将来默认到linux系统的/usr/include目录下找stdio.h头文件找到后将头文件内容全部拷贝过来

		  

            2. 语法:#include "头文件名"


                列如: #include "stdio.h"


                语义: 告诉gcc编译器先在当前目录下找stdio.h头文件,如果

找到了,那就包含拷贝;如果没有找到,再去/usr/include目录下找头文件

stdio.h,如果找到那就拷贝, 如果还没找到,就报错

    d) C程序必须包含一个唯一的主函数,名称必须叫main


        并且main函数的原型必须如下:

{
里面就是将来要执行的语句
}

或者:
int main(void){
里面就是将来要执行的语句
}

结论:将来运行C程序时,linux操作系统,只认main函数,必须从main

函数开始执行 ,从main函数开始,从上往下挨个执行

    e) 	C程序的主函数main中能够(花括号里面的内容)编写规范:


    1. 每条语句后面都要跟";"


    2. 执行顺序:从上往下挨个执行


    3. 只要遇到或者执行return,C程序立马结束


        return后面可以跟一个数字,例如:


        return 0; 表示告诉操作系统,此程序执行结束了并且执行的很正常


        return -1; 表示告诉操作系统,此程序执行结束了但是执行的时候优点问题

例如:main函数的形式如下
int main(void)
{
printf(“你好,世界”)
printf(“hello,world\n”);
return 0;
}

    f)  第一个认识的标准C库函数printf()

                

            1. 标准C库函数使用,调用语法: 函数名(信息);


        2. printf函数的功能:向显示器上打印输出信息


        3. 例如:printf("输出打印的信息\n");


	     注意: '\n': 表示回车换行,如果没有\n,光标继续显示在本行

				

        4. 注意:要想调用大神的printf,必须开头包含头文件stdio.h


        5. printf利用占位符可以打印输出制定的数字信息


	     %d占位符功能:按照整数形式打印输出一个数字


    例如:printf("1+1 = %d\n", 2); 
    语义:将来2这个数字会放到%d这个位置上,然后将1+1                 = 2这个信息打印到显示器
   printf("1+1 = %d\n", 1+1);
    语义:先算1+1,然后将1+1 = 2这个信息打印到显示器

3.4. gcc编译源文件的三种方式

    3.3.1  gcc编译的三种方式


            a) 流氓法

gcc helloworld.c 默认都会生成a.out(这个名字做不到见名知意)

            b) 分步编译

gcc -E -o helloworld.i helloworld.c // 先预处理
gcc -c -o helloworld.o helloworld.i // 然后只编译,不链接
gcc -o helloworld helloworld.o // 最后链接大神的printf,最终何时能成helloworld可执行程序
.helloworld //运行程序

            c) 一步到位

gcc -o hellowprld helloworld.c //直接对源文件进行编译生成可执行文件
//心里要明白:gcc还要做三件事,只是看不到而已

04

C语言(C程序)的变量

  1. 务必掌握计算机内存相关的概念

    1.内存的特点

             暂存CPU运算之前的数据和运算之后的数据,还有暂存程序,任何程
    

序都是在内存中存储,所以 势必要消耗 内存,速度快,掉电数据丢失

    结论:程序最终玩内存


    字节(Byte):

            计算机将内存分成一格一格,每一个用来存储一个数字,每一个的专业术语叫字节

	注意Byte的简称:B

换算公式: 1KB=1024B 1MB=1024KB=10241024 1GB=1024MB=10241024KB=102410241024B

    地址(address): 

                

            计算机给内存的每个字节指定一个固定的唯一的编号,此编号从0开

始,后续字节地址加1即可

	此编号的专业术语叫地址


	切记:只要知道了内存的某个字节的地址,将来就可以中国地址对没

存进行访问(读或者写)

    存储区(Buffer):


            计算机将1个字节或者多个连续的字节形成一个存储单元用来存储数

	例如:300亿这个数字如果用1个字节来存储显然这个数字太大了,

1个字节存不下,可用4个字节的连续内存来存储这个数字

    首地址(base address):

            

                存储区中能够第一个字节的地址又称首地址

问:C程序如何分配内存空间来存储数字呢?

答:切记:任何程序要想访问内训,必须先分配获取到内存才能访问

	如果·没有分配内存,直接去访问,操作系统直接将程序干掉,杀死(操作系统心里骂街)


	C程序通过定义变量来实现分配的内存;


 2. 变量的功能:

            就是C程序分配内存空间,一旦分配成功,程序就可以对内存进行存

储数字还可以修改存储的数字

 3. 定义变量(又称分配内存)语法格式:


             数据类型  变量名 = 初始值(可以有,可以没有)

例如:int a = 250;

说明:

int:它是一个关键字,它对应一种数据类型,表示将来分配4字节的内存空间

a:变量名

250:就是给分配的内存放一个数字250

结论:这条语句的结果是分配了4字节的内存空间并且这块内存空间放了250数字

例如:修改变量的值(也就是修改内存存储的数字)

int a = 250;

a = 520; // 修改变量a的值为520,也就是将内存中原先的250数字修改为520,其中“=”就是重新赋值的意思

打印变量的值(打印内训中存储的数据值):printf("%d\n",a); //将变量a的值打印输出

    4. 定义变量的四种形式:

     

            1. 只定义(分配内存)不初始化(不赋初值)


                int a;  //此时变量a的值或者对应的内存存储的数字是一个随机乱七八糟的数字


           2. 定义并且初始化


                 int a = 250;


           3. 连续只定义不初始化多个变量(逗号分割)


                 int a, b, c;    // 同样变量的值是乱七八糟的随机数


           4. 连续定义斌那个企鹅初始化多个变量


                  int a = 100, b = 200, c = 300;

小案例:演练变量的使用

  /*var.c:变量演示*/
  /*编译运行命令:gcc -o var var.c 然后 ./var*/

    #include <stdio.h>

    int main(void)
{
      //1.形式1
      int a;  //只定义不初始化
      printf("a = %d\n", a);  // 打印a的值(打印分配的内存里面的数字)
      //修改变量的值也及时重新给内存放置一个新的数字
      a = 520;
      printf("a = %d\n", a);

      //2. 形式2:定义并且初始化
      int b = 250;
      printf("b = %d\n", b);
      //修改变量的值,也就是重新给内存放置一个新的数字
      b = 520;
      printf("b = %d\n", a);
      
      printf("a + b = %d\n", a+ b);
      printf("a - b = %d\n", a- b);
      printf("a * b = %d\n", a* b);
      printf("a / b = %d\n", a/ b);

      //3.形式3:连续定义但不初始化(随机数)
      int c, d, e;
      printf("c = %d, d = %d, e = 5%d\n", c, d, e);

      //4.形式4:连续定义但不初始化
      int i = 100, j = 200;
      printf("i = %d, j = %d\n", i, j);
      return 0;
    }

cd tarena/stdc/day02
vim var.c
gcc -o var var.c
./var

    5.标识符命名规则

            

           a) 标识符:就是变量名(例如:a,b,c,d)或者函数名(例如:main,

printf等)

	b) 标识符命名规则:


		1. 第一个字母不能是数字,只能是字母或者下划线,区分大小写

例如:int 2var; //gcc报错
int v2ar; // 可以
int _2var; //可以

		2. 尽量做到见名知意

int a = 18; //你能知道a代表什么意思嘛?
int age = 18;//age就是年龄的意思

		3. 驼峰和下划线

驼峰:int nAge = 19;
int CreateWindows = 250;
下划线:int create_windows = 250;

		 4. C语言的关键字不能使用

例如:int, return, void等不能用

        6.C语言的编程风格:(不强求,其他风格都要根据公司来定)


		    a)各种该


			    该有空格加空格


			    该独占一行的独占一行


			    该有TAB键的添加TAB键


  例如:
    int main(void) {printf("hello,world\n");return 0;} // 读起来太费劲了
  应该:
    int main(void)

{ //独占一行

      printf("abc\n");

      printf("cbd\n");

    }  //独占一行

	      b)代码尽量写在屏幕左侧2/3区域,右侧1/3建议留白,如果超

过换行

  例如:
    printf("aaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb cccccccccccccccccccc\n");
    建议:
    printf("aaaaaaaaaaaaaaaa
        bbbbbbbbbbbbbbbb
        cccccccccccccccc\n");

关注公众号获取更多金彩内容关注公众号获取更多精彩内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值