您的位置:首页 > 运维架构 > Linux

Linux初识(二)与C语言基础(一)

2018-01-25 15:23 471 查看
热键:双击:tab查看输入路径下包含的文件

  tab:命令补全 ↑↓:上一个或者下一个输入的命令 ctrl + c :结束当前进程

Makefile :

 自动编译格式:

   目标
:依赖(.o文件)

    条件

make clean :清除

设置清除格式:
  .PHONY:
clean

  rm
* 文件名
gdb工具:调试程序
gcc -g 使编译程序能够使用gdb调试
调试方式:gdb+程序名 进入gdb模式
 list :列十行 break数字
:在某一行设置断点,或者设置函数名
next :一条一条语句执行 state :进入函数 return
: 从函数返回 run :从头运行
print :打印值 continue :从断点继续运行 quit
:退出gdb格式 info :查看断点信息

脚本使用基础 :
最重要的脚本为Bush 脚本后缀为.sh
写脚本:开头为#!/bin/sh
 echo :输出 echo
'hello' > a 将hello写入a,为覆盖模式
   
echo 'hello' >>a 将hello写入a,为追加模式
 $1第一个参数 $2第二个参数 $3第三个参数 $*所有参数 $0脚本名本身 $#参数个数
脚本用#注释
脚本循环结构之一:
for 参数 in $1 $2 $3 $4
do
done

判断文件类型脚本:
if [ -z $PATH ] ; then
 echo "error"
 exit
fi
if [ -d $PATH ] ; then
 echo "DIR"

elif [ -f $PATH ] ; then 
 echo "FILE"
fi
读取输入字符类型脚本:
read key
case "${key}" in
 [A-Z] ) echo "Upperletter";;

[a-z] ) echo "Lowerletter";;
  [0-9] ) echo "Number";;
  *) echo "error";;

esac
输入一大段代码的情况:
cat > $file <<EOF
代码
EOF

C语言基础(一)
sizeof 关键字的一种,求数据长度
有符号整型化为无符号整型反码加一
const修饰变量后为只读变量,不能通过变量修改内存值
volatile:防止编译时被优化
指针本身的大小由机器系统字长决定

堆和栈的区别:
  一、堆栈空间分配区别:

1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
 

 二、堆栈缓存方式区别:

1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
  2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
 

 三、堆栈数据结构区别:
  堆(数据结构):堆可以被看成是一棵树,如:堆排序;
  栈(数据结构):一种先进后出的数据结构。

static的用法:

第一、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。 

第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 
第三、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0; 
(1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰 
(2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: