嵌入式基礎總結4

2020-08-13 08:27:41

shell程式設計

  1. while回圈
while     命令或表達式
      do
               命令表
      done
  1. 回圈控制語句

break 跳出回圈
continue 跳出本次回圈,繼續下一次回圈

  1. 函數
function 函數名()
{
命令集合
}

函數名()
{
命令集合
}

採用命令列參數的形式進行傳參

返回值通過$?接收

SUM=func() —>>> func函數的輸出賦值給SUM變數

local修飾的變數是區域性變數

xxx.sh

./xxx.sh

var=filename

func $var

file file1

ls | grep $1 | wc -l

C語言編譯環境

  1. 編譯器——gcc

元件:

分析器:分析器將源語言程式程式碼轉換爲彙編語言。因爲要從一種格式轉換
爲另一種格式(C到彙編),所以分析器需要知道目標機器的彙編
語言。
彙編器:彙編器將彙編語言程式碼轉換爲CPU可以執行位元組碼。
鏈接器:鏈接器將彙編器生成的單獨的目標檔案組合成可執行的應用程式。
鏈接器需要知道這種目標格式以便工作。
標準C庫:核心的C函數都有一個主要的C庫來提供。如果在應用程式中用到
了C庫中的函數,這個庫就會通過鏈接器和原始碼連線來生成最終
的可執行程式。

  1. gcc編譯過程

預處理

gcc -E test.c -o test.i

編譯

gcc -S test.i -o test.s

彙編

gcc -c test.s -o test.o

鏈接

gcc test.o -o test

  1. 偵錯程式 —— gdb

檢視檔案
(gdb) l
設定斷點
(gdb) b 6
檢視斷點情況
(gdb) info b
執行程式碼
(gdb) r

檢視變數值
(gdb) p n
單步執行
(gdb) n
(gdb) s
恢復程式執行
(gdb) c
幫助
(gdb) help [command]

【三】、指針

  1. 地址:記憶體單元的編號

  2. 數據型別:用來修飾變數(定義變數時使用)

作用:確定變數在記憶體中的大小

  1. 變數:變數是對記憶體空間的抽象

  2. 指針:數據型別 —>>> 修飾變數

作用:確定變數在記憶體中的大小

char ch;
int a;

指針 p;

在記憶體中開闢4byte

  1. 指針變數

本質:變數

對記憶體空間的抽象

指針的一般定義形式:

<數據型別> * 指針變數名;

指針和陣列

int *p ;

int arr[10]; 

p = arr;

sizeof:計算變數或數據型別在記憶體中的大小

sizeof(arr) = 40;
sizeof(int) = 4;

一維陣列,陣列名代表什麼含義:陣列在記憶體空間中
的首地址(地址常數)。

指針和字串

字串儲存:

1.字串陣列
2.常數區

char buf[] = {'a','b','c','d','\0'};
char buf[] = "abcd";
char *p = "abcd";
char *q = buf;

指針陣列和陣列指針

  1. 指針陣列:

本質:陣列

元素的型別:地址常數、指針變數

一般定義形式:

<數據型別>* 陣列名[陣列元素個數];

  1. 二維陣列指針變數:

本質:指針變數
指針變數裡存放的是指向二維陣列首地址的

一般定義形式:

<數據型別> (*陣列指針變數名)[列數];

int a[2][3];

int (*p)[3] = a;

a[i][j] <==> *(a[i] + j) <==> *(*(a+i) + j)

<==>*(*(p+i) + j) <==> *(p[i] + j) <==> p[i][j]