linux c 语言小结

linux c 语言小结

gdb 使用

(gdb是调试linux c语言代码的,所以要调试linux c语言,先要 gcc -g 文件名,才能开始调试)

gdb 命令

首先在命令行中输入 gdb
调试的基本代码

list 展示
s 进入函数内部
按回车执行刚才的命令
start 开始调试
list 查看10行
P 变量 : 查看这个变量
p *p 找出p指向的值
bt 查看函数堆栈
f 1 跳到1这个堆栈
quit 退出

vim扩展使用

命令模式 w代表保存
	     shift + a 行尾
         shift + i 行首
         shift + o 上一行插入
         o 下一行插入
     :sp max.c 创建一个max.c的文件,同时打开多个文件
     CTRL + W + ↓ 跳转到下面
     :set nu 打开行号
     按9后按dd 剪切9行
     P 粘贴
     :wqa 把所有文件保存退出

make使用

(要有Makefile文件,make执行只能是这个名字,所以先创建Makefile 文件)

vim Makefile
里面的'#'表示注释

Makefile里面内容
得到什么:需要1 需要2 需要3
编译什么 #如果需要的没有就从下面开始找,并且注意前面是一个table不能6个空格
得到什么:需要1
编译他
例子

hello.out:max.o min.o hello.c
	gcc max.o min.o hello.c -o hello.out
max.o:max.c
	gcc -c max.c
min.o:min.c
	gcc -c min.c

注意make的编译指令是一个TAB,接近于6个空格,但是你不能打6个空格,否则会报错

执行 make,直接输入make就好

make

linux c 语言新知识

&& 连接符可以同时执行多条指令,如

gcc main.c -o main.o && ./main.o

查看main返回 (也就是正常main 后面return 0)

echo $?

c语言里main()函数有2个参数,int argv 和char* argc[],在你需要的时候可以调用他
main(int argv,char* argc[])
argv表示同时执行了几个命令, argc[]里面的内容表示执行命令的内容是很忙

stdin   标准输入流
stdout  标准输出流
stderr  标准错误流

" >>"(输出重定向,不覆盖)如:

(空或者1)1>>a.txt (把输出内容输出到a.txt中)  (1为标准输出流,2代表标准错误流)
如: ls  >> a.txt

“>”(覆盖的重定向)
“<”(输入重定向)
把input.txt输入到./a.out中

./a.out <input.txt

管道 “|”
把前一个的输出流放到后一个的输入流中
如你写了一个输出流的函数和需要一个输入流的c文件
如下a.c

#include<stdio.h>
int main(){
    printf("1 2");
}

又写了 b.c(需要输入流的c文件)

#include<stdio.h>
int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",a+b);
}
gcc a.c -o a.out
gcc b.c -o b.out
./a.out | ./b.out

然后你就会发现输出了3也就是a+b

多个文件编译
自己定义个max.c文件
max.c内容

    int max(int a,int b){
          if(a>b){
               return a;
           }else{
               return b;
           }
     }

hello.c 里面调用max.c的内容

 gcc max.c hello.c -o hello.out
     要加头文件:例如 #include "max.h"
     max.h里面写 int max(int a,int b);

内存
int *p =&a;

p=p+3 地址指向往下移3位
gcc 编译
p[3] 和 p+=3一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值