linux c 语言小结

2023-11-18

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一样

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux c 语言小结 的相关文章

随机推荐

  • el-table操作列的按钮超过三个时,动态计算,将多余的按钮放入更多el-dropdown-menu中

    一下是封装好的操作列组件 OperateBtn
  • numpy.mgrid()函数虚数参数问题

    想要了解详细的numpy mgrid 函数请看这一篇 np ogrid np mgrid 和meshgrid 函数的关系 这里我们来记录一下关于在numpy mgrid 函数输入参数中输入虚数的问题 我们来看两个例子 例子一 class D
  • 将升序单链表/数组转换为平衡二叉树BST

    给定一个单链表 其中的元素按升序排序 请将它转化成平衡二叉搜索树 BST 递归 o nlogn 解题思路 1 找到链表的中点mid 2 记录mid前缀 断开链表 3 将mid放入到树中 4 递归head 左链表 mid next 右链表 i
  • bilibili视频下载神器[无广告]

    一 前言 最近群里有小伙伴问我bilibili视频如何下载 当然目前下载的方法网上有很多 但是习惯使然 我一般只介绍我信得过的软件以及广告很少的软件 也就是追求最简洁的页面以及最强大的功能 因此这里就给大家带来一个我最喜欢的B站视频下载神器
  • 在小数定点机中,为什么只有补码可以表示-1.0呢

    这个问题可以拓展 在8位整数机器中 为什么只有补码可以表示 128呢 这里先看小数定点机 8位小数定点机中的数据表示 S XXXXXXX S是正负符号位 后面的7个X是数值位 如下都以8位二进制的小数定点机为例展开 原码 实例1 二进制的0
  • 拦截窗体消息—使用NativeWindow

    NativeWindow提供窗口句柄和窗口过程的低级封装 下面是拦截ContextMenu的显示和消失的例子 public class NativeContextMenu NativeWindow private const int WM
  • linux环境开发

    在服务器中 通过代码读取数据集data 并将数据集data加载到cpu的内存中 再通过data cuda 命令将数据集从cpu 传到gpu运行 gpu上开始训练 模型训练的结果 如权重参数等 也是存放在gpu中 再通过 cpu 命令将模型输
  • Raspberry Pi 上 ROS 服务器/客户端通过GPIO 驱动硬件

    ROS 服务 现在 想象一下你在你的电脑后面 你想从这个服务中获取天气 你 在你身边 被认为是客户端 在线天气服务是服务器 您将能够通过带有 URL 的 HTTP 请求访问服务器 将 HTTP URL 视为 ROS 服务 首先 您的计算机将
  • 2023年江苏省赛事网络空间安全理论题库

    单选题 1 访问控制是指确定 以及实施访问权限的过程 A 用户权限 B 可给予哪些主体访问权利 C 可被用户访问的资源 D 系统是否遭受入侵 答案 A 2 数据安全从总体上可以分成5个层次 是信息安全中研究的关键点 A 密码技术 B 安全协
  • MySQL慢查询

    看到这个名称我惊呆了 SQL不是希望快速查询取得结果吗 怎么什么时候会有这个概念 问了一个哥们 哥们认为是漫查询 同时多查询 于是Google得出了如下结果 慢查询其实对应的是MySQL慢查询日志系统 用来记录执行比较慢的SQL 怎么去判断
  • python从入门到时间_史上最详细python学习路线-从入门到精通,只需5个月时间

    针对Python的初学者 从无到有的Python语言如何入门 主要包括了 Python的简介 如何下载Python 如何安装Python 如何使用终端 Shell IDE等各种开发环境进行Python开发 Python中的语法和基本知识 概
  • 在一台电脑上出现提交文件名是中文的时候就报错HTTP Status 400 – Bad RequestRequired MultipartFile parameter 'excelFile&#

    在一台电脑上出现提交文件名是中文的时候就报错HTTP Status 400 Bad RequestRequired MultipartFile parameter excelFile
  • 如何在普通PC上安装macOS苹果操作系统

    目录 官网 如何下载和安装 macOS 如何在普通PC上安装macOS苹果操作系统 Mac PC 有什么不同 说明 1 下载 可以直接从 网页上 采用通常的方式进行下载 不需要使用 使用 App Store 但使用使用 App Store下
  • python安装模块方法_Python模块安装方法

    一 方法1 单文件模块 直接把文件拷贝到 python dir Lib 二 方法2 多文件模块 带setup py 下载模块包 进行解压 进入模块文件夹 执行 python setup py install 三 方法3 easy insta
  • python根据TF-IDF使用sklearn(TfidfVectorizer)计算句子的embedding

    TF IDF的计算公式如下 代码案例 from sklearn feature extraction text import TfidfVectorizer import jieba sentences list list 优惠的政策和政府
  • POI操作excel基本使用

    不用多说 下面的一个类中就是一些POI操作Excel xls 的常见操作 但是真正要生成一些如报表等复杂格式Excel的时候 通常的做法都是事先把格式一切的东西都手动制作好 数据模板 然后在Java应用中适当的时机把这个文件读进来 添加相应
  • 【蓝桥杯试题】试题 算法训练 印章

    试题 算法训练 印章 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 共有n种图案的印章 每种图案的出现概率相同 小A买了m张印章 求小A集齐n种印章的概率 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案 保
  • 正则实现去除字符串前后空格

    前言 正则去掉字符串前后空格 1 去除左空格 str1是处理后的 let str1 str replace s g 2 去除右空格 str2是处理后的 let str2 str replace s g 3 去除左右空格 let str3 s
  • qt 多边形填充 生成语义分割的mask 灰度图

    qt多边形的绘制 填充与显示 直接在QWidget界面显示 重写paintEvent即可 QtTest QtTest QWidget parent QMainWindow parent ui setupUi this void QtTest
  • linux c 语言小结

    linux c 语言小结 gdb 使用 gdb是调试linux c语言代码的 所以要调试linux c语言 先要 gcc g 文件名 才能开始调试 gdb 命令 首先在命令行中输入 gdb 调试的基本代码 list 展示 s 进入函数内部