Linux_linux常用工具---闲杂篇(除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.)

vim自行查找资料, 自行配置插件.

借鉴别人的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
" 显示相关
“”""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示
"winpos 5 5 " 设定窗口位置
"set lines=40 columns=155 " 设定窗口大小
"set nu " 显示行号
set go= " 不要图形按钮
"color asmanian2 " 设置背景主题
set guifont=Courier_New:h10:cANSI " 设置字体
"syntax on " 语法高亮
autocmd InsertLeave * se nocul " 用浅色高亮当前行
autocmd InsertEnter * se cul " 用浅色高亮当前行
"set ruler " 显示标尺
set showcmd " 输入的命令显示出来,看的清楚些
"set cmdheight=1 " 命令行(在状态行下)的高度,设置为1
“set whichwrap+=<,>,h,l " 允许backspace和光标键跨越行边界(不建议)
“set scrolloff=3 " 光标移动到buffer的顶部和底部时保持3行距离
set novisualbell " 不要闪烁(不明白)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(”%d/%m/%y\ -\ %H:%M”)} "状态行显示的内容
set laststatus=1 " 启动显示状态行(1),总是显示状态行(2)
set foldenable " 允许折叠
set foldmethod=manual " 手动折叠
"set background=dark "背景使用黑色
set nocompatible "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

" 显示中文帮助  
if version >= 603  set helplang=cn  set encoding=utf-8  
endif  " 设置配色方案  
"colorscheme murphy  "字体   
"if (has("gui_running"))   
"   set guifont=Bitstream\ Vera\ Sans\ Mono\ 10   
"endif   set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936  
set termencoding=utf-8  
set encoding=utf-8  
set fileencodings=ucs-bom,utf-8,cp936  
set fileencoding=utf-8  """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"""""新文件标题""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"新建.c,.h,.sh,.java文件,自动插入文件头   
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"   
""定义函数SetTitle,自动插入文件头   
func SetTitle()   "如果文件类型为.sh文件   if &filetype == 'sh'   call setline(1,"\#########################################################################")   call append(line("."), "\# File Name: ".expand("%"))   call append(line(".")+1, "\# Author: ma6174")   call append(line(".")+2, "\# mail: ma6174@163.com")   call append(line(".")+3, "\# Created Time: ".strftime("%c"))   call append(line(".")+4, "\#########################################################################")   call append(line(".")+5, "\#!/bin/bash")   call append(line(".")+6, "")   else   call setline(1, "/*************************************************************************")   call append(line("."), "    > File Name: ".expand("%"))   call append(line(".")+1, "    > Author: ma6174")   call append(line(".")+2, "    > Mail: ma6174@163.com ")   call append(line(".")+3, "    > Created Time: ".strftime("%c"))   call append(line(".")+4, " ************************************************************************/")   call append(line(".")+5, "")  endif  if &filetype == 'cpp'  call append(line(".")+6, "#include<iostream>")  call append(line(".")+7, "using namespace std;")  call append(line(".")+8, "")  endif  if &filetype == 'c'  call append(line(".")+6, "#include<stdio.h>")  call append(line(".")+7, "")  endif  "新建文件后,自动定位到文件末尾  autocmd BufNewFile * normal G  
endfunc   """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"键盘命令  
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
nmap <leader>w :w!<cr>  
nmap <leader>f :find<cr>  
" 映射全选+复制 ctrl+a  
map <C-A> ggVGY  
map! <C-A> <Esc>ggVGY  
map <F12> gg=G  
" 选中状态下 Ctrl+c 复制  
vmap <C-c> "+y  "去空行    
nnoremap <F2> :g/^\s*$/d<CR>   "比较文件    
nnoremap <C-F2> :vert diffsplit   "新建标签    
map <M-F2> :tabnew<CR>    "列出当前目录文件    
map <F3> :tabnew .<CR>    "打开树状文件目录    
map <C-F3> \be    
"C,C++ 按F5编译运行  
map <F5> :call CompileRunGcc()<CR>  
func! CompileRunGcc()  exec "w"  if &filetype == 'c'  exec "!g++ % -o %<"  exec "! ./%<"  elseif &filetype == 'cpp'  exec "!g++ % -o %<"  exec "! ./%<"  elseif &filetype == 'java'   exec "!javac %"   exec "!java %<"  elseif &filetype == 'sh'  :!./%  endif  
endfunc  "C,C++的调试  
map <F8> :call Rungdb()<CR>  
func! Rungdb()  exec "w"  exec "!g++ % -g -o %<"  exec "!gdb ./%<"  
endfunc  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
""实用设置  
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  " 设置当文件被改动时自动载入  
set autoread  
" quickfix模式  
autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>  "代码补全   
set completeopt=preview,menu   "允许插件    
filetype plugin on  "共享剪贴板    
set clipboard+=unnamed   "从不备份    
set nobackup  "make 运行  
:set makeprg=g++\ -Wall\ \ %  "自动保存  set autowrite  
set ruler                   " 打开状态栏标尺  
set cursorline              " 突出显示当前行  
set magic                   " 设置魔术  
set guioptions-=T           " 隐藏工具栏  
set guioptions-=m           " 隐藏菜单栏  
"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\  " 设置在状态行显示的信息  
set foldcolumn=0  
set foldmethod=indent   
set foldlevel=3   
set foldenable              " 开始折叠  " 不要使用vi的键盘模式,而是vim自己的  
set nocompatible  " 语法高亮  
set syntax=on  " 去掉输入错误的提示声音  
set noeb  " 在处理未保存或只读文件的时候,弹出确认  
set confirm  " 自动缩进  
set autoindent  
set cindent  " Tab键的宽度  
set tabstop=4  " 统一缩进为4  
set softtabstop=4  
set shiftwidth=4  " 不要用空格代替制表符  
set noexpandtab  " 在行和段开始处使用制表符  
set smarttab  " 显示行号  
set number  " 历史记录数  
set history=1000  "禁止生成临时文件  
set nobackup  
set noswapfile  "搜索忽略大小写  
set ignorecase  "搜索逐字符高亮  
set hlsearch  
set incsearch  "行内替换  
set gdefault  "编码设置  
set enc=utf-8  
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936  "语言设置  
set langmenu=zh_CN.UTF-8  
set helplang=cn  " 我的状态行显示的内容(包括文件类型和解码)  
"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}  
"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]  " 总是显示状态行  
set laststatus=2  " 命令行(在状态行下)的高度,默认为1,这里是2  
set cmdheight=2  " 侦测文件类型  
filetype on  " 载入文件类型插件  
filetype plugin on  " 为特定文件类型载入相关缩进文件  
filetype indent on  " 保存全局变量  
set viminfo+=!  " 带有如下符号的单词不要被换行分割  
set iskeyword+=_,$,@,%,#,-  " 字符间插入的像素行数目  
set linespace=0  " 增强模式中的命令行自动完成操作  
set wildmenu  " 使回格键(backspace)正常处理indent, eol, start等  
set backspace=2  " 允许backspace和光标键跨越行边界  
set whichwrap+=<,>,h,l  " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)  
set mouse=a  
set selection=exclusive  
set selectmode=mouse,key  " 通过使用: commands命令,告诉我们文件的哪一行被改变过  
set report=0  " 在被分割的窗口间显示空白,便于阅读  
set fillchars=vert:\ ,stl:\ ,stlnc:\  " 高亮显示匹配的括号  
set showmatch  " 匹配括号高亮的时间(单位是十分之一秒)  
set matchtime=1  " 光标移动到buffer的顶部和底部时保持3行距离  
set scrolloff=3  " 为C程序提供自动缩进  
set smartindent  " 高亮显示普通txt文件(需要txt.vim脚本)  
au BufRead,BufNewFile *  setfiletype txt  "自动补全  
:inoremap ( ()<ESC>i  
:inoremap ) <c-r>=ClosePair(')')<CR>  
:inoremap { {<CR>}<ESC>O  
:inoremap } <c-r>=ClosePair('}')<CR>  
:inoremap [ []<ESC>i  
:inoremap ] <c-r>=ClosePair(']')<CR>  
:inoremap " ""<ESC>i  
:inoremap ' ''<ESC>i  
function! ClosePair(char)  if getline('.')[col('.') - 1] == a:char  return "\<Right>"  else  return a:char  endif  
endfunction  
filetype plugin indent on   "打开文件类型检测, 加了这句才可以用智能补全  
set completeopt=longest,menu  """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
" CTags的设定    
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
let Tlist_Sort_Type = "name"    " 按照名称排序    
let Tlist_Use_Right_Window = 1  " 在右侧显示窗口    
let Tlist_Compart_Format = 1    " 压缩方式    
let Tlist_Exist_OnlyWindow = 1  " 如果只有一个buffer,kill窗口也kill掉buffer    
let Tlist_File_Fold_Auto_Close = 0  " 不要关闭其他文件的tags    
let Tlist_Enable_Fold_Column = 0    " 不要显示折叠树    
autocmd FileType java set tags+=D:\tools\java\tags    
"autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags    
"let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的  "设置tags    
set tags=tags    
"set autochdir   """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
"其他东东  
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  "默认打开Taglist   
let Tlist_Auto_Open=1   """"""""""""""""""""""""""""""   
" Tag list (ctags)   
""""""""""""""""""""""""""""""""   
let Tlist_Ctags_Cmd = '/usr/bin/ctags'   
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的   
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim   
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口  " minibufexpl插件的一般设置  
let g:miniBufExplMapWindowNavVim = 1  
let g:miniBufExplMapWindowNavArrows = 1  
let g:miniBufExplMapCTabSwitchBufs = 1  
let g:miniBufExplModSelTarget = 1  

更多参考https://blog.csdn.net/qq_38434805/article/details/80634636
源码安装:

步骤: 编译源码,然后安装
1.安装准备:
a、首先用yum安装gcc,用于编译源码
b、管网下载源码包
c、winSCP windows与Linux传输文件(若直接用安装软件的linux电脑下载就不用传输了)
2.安装过程
a、解压
b、进入解压后的目录配置文件 ./configure # 大多数情况下源码包都会带configure这样一个配置工具,具体使用方法可以vim查看其内容
c、make #编译源码包 如果报错了 make clean 清除缓存重新make
d、make install # 安装
然后删除源码包软件和安装目录

源码安装, rpm安装, yum安装). 重点要理解rpm安装和yum安装的区别.

rpm安装

rpm安装:安装别人编译好的软件包rpm即Redhat Package Manager,Redhat的软件包管方式,适用rpm install 命令rpm不仅已经把软件源代码编译成二进制文件,而且对软件包依赖的文件,系统环境等做了统计文件扩展名:rpm还有一种SRPM:没有编译成二进制文件,但是也包含rpm的特性

yum安装

用rpm方式安装软件,如果依赖的软件没有事先安装,软件无法安装成功。为了解决这个问题,推出yum方式。既然依赖的软件没有安装在机器上,那么就先安装依赖文件,再安装我需要安装的软件。因此yum在安装软件同时安装依赖文件。因此需要一个yum源来放依赖的软件源,对比被安装机器上rpm软件库归根到底,yum也是基于rpm的。

除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.

1.Vim

 Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

2. Eclipse

   Eclipse是一款很酷的开源代码编辑器,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,完全胜任以下编程语言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。

3.Brackets

  Brackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代码也可以及时预览你的Web页面效果。你也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然你也可以在扩展中心获取更多的主题。

4.Emacs

Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。
Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、
通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能

5.Light Table

  Light Table是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。

6.Chocolat

  Chocolat本身是Mac OS X的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。

7.Sublime Text

   一个紧凑但性能较高的代码编辑器一个跨平台的代码编辑器,适用于所有WordPress项目。
Sublime Text有很多功能可以提供:

调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).

EGCS:包括了C/C++/Obj-C/Fortran等编译器 Clang:licence极度友好,代码质量非常棒,采用的IR为LLVM IR非常优秀,但是Clang依赖于的LLVM,
目前的性能无法与GCC相提辩论,缺乏对GCC一些Builtin函数、自身带的汇编器的孱弱,对一些开源软件没有办法编译过去。ICC:没有自己专门的前端(传说中的外包),而且是针对Intel体系结构上专门优化。IBM XL C++:在IBM特定硬件与平台上表现非常牛逼,Benchmark性能测试非常优秀,但是在编译时间上过长,
对C++标准的支持、开源软件的支持、错误信息的提示上都不够友好。

2.为什么调试的时候需要编译选项中添加 -g?

在 Linux 中,我们常用 gcc编译生成可执行文件, 但是可执行程序中没有可供 gdb 调试使用的特殊信息,
无法使用 gdb 来跟踪或调试,因此我们需使用到 -g 选项,这样生成的可执行程序就可以使用 gdb 找出出现问题的位置,从而解决问题。

3. readelf命令

(1)readelf用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档
(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。(2)选项
在 Linux 中输入 man readelf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu14.04下安装qt4.8.6 +qt creator

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://248341.blog.51cto.com/238341/1438867以前安装时没太注意&#xff0c;安装qt后发现在qt creator下无法输入中文&#xff0c;或者中文无法…

堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)

堆的特性&#xff1a; 必须是完全二叉树 用数组实现 任一结点的值是其子树所有结点的最大值或最小值 最大值时&#xff0c;称为“最大堆”&#xff0c;也称大根堆&#xff1b; 在完全二叉树中&#xff0c;任何一个子树的最大值都在这个子树的根结点。最小值时&#xff0c;称为…

网络基础2(分层模型,通信过程,以太网,ARP协议格式和具体功能详解)

分层模型 OSI七层模型 OSI模型 1 物理层&#xff1a;主要定义物理设备标准&#xff0c;如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流&#xff08;就是由1、0转化为电流强弱来进行传输&#xff0c;到达目的地后再转化为1、0&#…

网络基础3(IP段格式,UDP数据报格式,TCP数据报格式)

IP段格式 IP数据报的首部长度和数据长度都是可变长的&#xff0c;但总是4字节的整数倍。 对于IPv4&#xff0c;4位版本字段是4。4位首部长度的数值是以4字节为单位的&#xff0c;最小值为5&#xff0c;也就是说首部长度最小是4x520字节&#xff0c;也就是不带任何选项的IP首部…

堆的应用(堆排序,TopK问题)

堆的应用 1&#xff09;排序 堆排序 选择排序 既可以找到最大的放在最后 也可以找到最小的方最前 但是&#xff0c;堆排序不能找最小的放在最前 因为把最小数放在最前&#xff0c;会破坏掉堆的原来的顺序&#xff0c;除非重新建堆 1&#xff0c; 2&#xff0c;9&#xff0c…

网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)

TCP协议 TCP通信时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 TCP通讯时序 在这个例子中&#xff0c;首先客户端主动发起连接、发送请求&#xff0c;然后服务器端响应请求&#xff0c;然后客户端主动关闭连接。 两条竖线表示通讯的…

排序(基本概念及分类,直接插入排序和希尔排序)

排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&a…

直接交换排序

直接交换排序 缺点&#xff1a;进行一些重复性比较&#xff0c;解决放法&#xff1a;堆排序 选择排序优化 //如果当前的数大于假定最大的数 //改变下标 //如果当前的数小于假定最小的数 //改变下标 //遍历数组跳到下一个元素 //如果最大的数没有在它的位置上 //交换 //交换…

快速排序概念及实现

快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c; 其基本思想为&#xff1a; 任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列…

归并排序概念及其实现

基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个…

计数排序和基数排序

适用于数据集中在某个范围中&#xff0c; //统计每个数据出现的次数 计数排序&#xff1a;鸽巢原理 1找范围 2给空间 3记次数 4回收 for(int i 0;i<size; i) {temp[array[i]]; }for(int i0;i<range;i&#xff09;{while(temp[i])array[index]i;}代码实现 时间复杂度&…

C++起始(关键字,命名空间,缺省参数,函数重载(c语言为什么不支持函数重载))

1. C关键字(C98) 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用 域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污…

GitHub相关

git是一个版本控制工具. 主要解决三个问题 代码被喵星人吃掉了.产品经理反复修改需求, 需要同时维护多个版本代码.多人协同开发. 安装 git for windows 这个是一个git的windows系统的命令行版本 https://git-scm.com/downloads 下载会很慢很慢 使用 Github 创建项目 注册…

c++起始(名词修饰,extern “C” ,引用)

名字修饰(name Mangling) 在C/C中&#xff0c;一个程序要运行起来&#xff0c;需要经历以下几个阶段&#xff1a;预处理、编译、汇编、链接。 Name Mangling是一种在编译过程中&#xff0c;将函数、变量的名称重新改编的机制&#xff0c;简单来说就是编译器为了区分各 个函数…

linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)

系统编程&#xff1a; 进程概念->进程控制->基础IO->进程间通信->进程信号->多线程进程概念 冯诺依曼体系结构----现代计算机硬件体系结构 冯诺依曼体系结构----现代计算机硬件体系结构 计算机五大硬件单元&#xff1a;输入设备&#xff1a;键盘输出设备&#…

Linux系统编程之进程控制(进程创建,fork函数,进程中止,进程等待,程序替换)

进程创建 fork()------复制&#xff0c;返回值&#xff0c;写时复制 vfork()创建子进程—子进程与父进程共用同一块虚拟地址空间&#xff0c; 为了防止调用栈混乱&#xff0c;因此阻塞父进程直到子进程调用exit&#xff08;&#xff09;退出或者进行程序替换 vfork创建的子…

Linux系统编程下做一个简易的shell

自主实现一个shell--------minshell shell&#xff1a;命令行解释器-------解释执行用户的输入&#xff08;完成相对应的功能&#xff09; 步骤 1. 获取标准输入中的字符串 2. 对字符串进行解析[ls -l -a][ls ] [-l ] [-a] 3. 创建子进程 4. 子进程中进行程序替换 5. 父进程…

C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))

内联函数 概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数压栈的开销&#xff0c; 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数&#xff0c;在编译期间编译器会用函数体替换函数的调用…

数据结构课程设计---c语言实现通讯录(动态扩容+文件存储)

1 题目一 &#xff1a; 通讯录 1.1问题描述 编写一个通讯录管理系统&#xff0c;以把所学数据结构知识应用到实际软件开发中去。每条信息至包含 &#xff1a;姓名&#xff08;NAME &#xff09;街道&#xff08;STREET&#xff09;城市&#xff08;CITY&#xff09;邮编&#…

数据结构课程设计------c实现散列表(二次探测再哈希)电话簿(文件存储)

题目二 &#xff1a;散列表的设计与实现 2.1问题描述 设计散列表实现电话号码查找系统&#xff0c;使得平均查找长度不超过2基本要求 &#xff08;1&#xff09;设每个记录有下列数据项&#xff1a;电话号码、用户名、地址&#xff1b; &#xff08;2&#xff09;从键盘输入各…