【一】、變量的存儲類型
1. 變量的定義
變量是對內存空間的抽象
2. 變量的生命周期
變量在內存中的存儲時間。既變量從申請內存到釋放內存的一段時間。
3. 變量的作用域
變量的作用范圍,既哪部分的程序可以使用該變量。
4. 鏈接點
外部鏈接
可以在一個多文件程序中的任何地方使用(auto 修飾的全局變量)
內部鏈接
在一個文件的任何地方使用(static 修飾的變量只可以在本文件內使用)
空鏈接
代碼塊作用域或者函數原型作用域(只能在函數中使用)
5. auto、static、extern、register
static:
1. 改變變量的作用域
2. 延長變量的生命周期
3. 只初始化一次
register:
register修飾的變量,希望分配一個寄存器來存放變量的值,但是不一定能分配到。如果分配不到就放在內存里。
extern:調用外部文件的
4G虛擬內存空間劃分:
3G-4G:內核空間
0G-3G:用戶空間
棧區(局部變量)
堆區(用戶手動分配的空間)
.data段(初始化的全局變量和初始化的靜態局部變量)
數據區 --->>> .bss段(未初始化的全局變量和未初始化的靜態局部變量)
常量區(只讀)
代碼段(只讀
【二】、動態內存分配
/****************************
*功能:在堆中分配空間
*參數:申請的堆空間的大小,單位是位
*返回值:
* 成功:返回一個可用的地址
* 失敗:返回NULL
****************************/
void *malloc(size_t size);
#include
/*************************************
*功能:設置指針指向的內存空間
*參數:
* s:要設置的內存空間的首地址
* c:要寫入內存中的值
* n: 寫入多少個字節
*************************************/
void *memset(void *s, int c, size_t n);
/*************************************
*功能:釋放堆空間
*參數:指向要釋放的堆空間的首地址
*************************************/
void free(void *ptr);
注意:釋放完堆空間以后,將指針賦值為NULL。
malloc函數的一般傳參形式:
int *p = (int *)malloc(10*sizeof(int));
【三】、make工程管理工具
1. 簡介
工程管理器,顧名思義,是指管理較多的文件
特點(優勢):
構根據文件時間戳自動發現更新過的文件而減少編譯的工作量
命名方式:
GNUmakefile、 makefile、 Makefile
Makefile的三要素:
目標
依賴
規則
Makefile的格式:
目標:依賴
2. 自定義變量的四種賦值方式
1.遞歸展開方式VAR=var
特點:向后引用
2.簡單方式 VAR:=var
3.?=定義變量
VAR ?= var
如果VAR變量在之前定義過,就使用之前的值,否則使用現在定義的值
4.+=定義變量
在原來變量的基礎上增加值
VAR := add.o
VAR += sub.o
3. 預定義變量
4. 自動變量
依賴文件:
$+ 所有的依賴文件,以空格分開,并以出現的先后為序,可能包含重復的依賴文件
$^ 所有不重復的目標依賴文件,以空格分開
$< 第一個依賴文件的名稱
$? 所有時間戳比目標文件晚的依賴文件,并以空格分開
目標文件:
$@ 目標文件的完整名稱
$* 不包含擴展名的目標文件名稱
5.
-C dir讀入指定目錄下的Makefile
-f file讀入當前目錄下的file文件作為Makefile
-i 忽略所有的命令執行錯誤
华清图书馆
0元电子书,限时免费申领10本华清图书PDF版
扫码关注华清远见公众号