1. 程式人生 > >C語言 函數

C語言 函數

c語言 指針 ++ 自我管理 nbsp 周期 列表 ati alt

內存屬性:

1.大小

2.位置

int a; 默認方式 (段)

技術分享圖片技術分享圖片技術分享圖片技術分享圖片

————————————————————————————————————————————————————————————————————————————————————————

內核空間 應用程序不許訪問

------------------------------------------3g

棧空間 局部變量 讀寫 (運行時,函數內部使用的變量,函數一但返回,就釋放,生存周期時函數內)

-----------------------

運行時的堆空間 malloc (運行時,可以自我管理的分配和釋放的空間,生存周期由程序員覺得) 分配: malloc() ,一旦成功,返回分配好的地址給我們,只需要接受,對這個 地址的讀法,由程序員把握,輸入參數指定分配的大小,單位是B。

釋放:free(p);

------------------------

全局的數據空間 (初始化的,未初始化的) (static為局部的全局數據段) 讀寫 data(全局初始化) bss(全局未初始化)

只讀數據段 “ ” 字符串常量 只讀 text (靜態空間,整個程序結束時釋放內存,生存周期最長)

代碼段 code 只讀 text

-------------------------

0x0 ;

————————————————————————————————————————————————————————————————————————————————————

技術分享圖片

分配:技術分享圖片

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

輸入參數

調用者 : 函數名 (數據) //實參

被調者: 函數的具體實現

函數的返回值 函數名(接受的數據) // 形參

實參以拷貝的的形式傳遞給形參:

--------------------------------------------------------------------------------------------------------------------------------------------------

地址傳遞:(用處:1,上層允許下層子程序修改其空間值;;2. 連續空間的傳遞)

技術分享圖片技術分享圖片

swpa()將main中的AB值拷入自己的AB值中交換數值,其swpa()中AB值被交換,但不會影響到main() 中的AB值

技術分享圖片技術分享圖片

swap()將ab的地址拷入,直接操作其地址的值,致使main()中ab的值也發生變化。

空間的讀寫 (節約內存,只需要知道首地址)

void fun (char *p); 該空間可能修改

void fun (const char *p) 只讀空間

空間:首地址,結束地址(必須知道)

結束標誌:字符空間:內存裏面存放了0x00 (1B) while(p[i]==0) { };

非字符空間:0x00不能當成結束標誌,必須有數量。 for (i = 0 ; i < len ; i++) { };

一般定義數組定義為unsigned char buf [];

void * : 非字符空間的標識符; 形參可以代表任何形式 (char ,int,struct 等)。

技術分享圖片 void * 在具體使用中一定要轉化成具體的類型

實際中:如果操作整個空間,定義為void * ; 如果是值的修改,定義為具體。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

連續空間的傳遞:

1,數組

數組名 -- 標簽

實參:

int abc[10];

fun (abc)

形參:

void fun(int *p) == void fun (int p[10])

2.結構體

結構體變量

struct abc{int a;int b; int c;};

用: struct abc buf;

實參:

fun(buf); fun(&buf)

形參:

void fun (struct abc ai) void fun (struct abc *a2) 優

*********************************************************************************************************************************************************************

返回值

基本語法:返回類型 函數名稱 (輸入列表) return

指針式空間返回的唯一數據類型

int *fun();

地址 :指向的合法性。【不是局部變量】

技術分享圖片技術分享圖片技術分享圖片技術分享圖片技術分享圖片

局部變量buf定義在fun()中,作為返回值在main()中P指向時,已經消失;而“ ” 在常量區,不會消失,所以P指向

方式:1,static 靜態區

2,只讀區 (基本用不到)

3,堆區 (malloc申請空間,使用strcyp()將其初始化,返回;在主函數調用完成後必須使用free()釋放空間)

C語言 函數