1. 程式人生 > >c復習過程隨筆七

c復習過程隨筆七

動態存儲 問題 主函數 使用 系統 靜態 隨筆 blog 相同

定義參數:無參:

類型名 函數名()

{

函數體

}

有參:

類型名 函數名(形式參數表列)

{

函數體

}

空函數

調用函數時註意函數有無返回值

參數傳遞:實參(常量變量表達式)傳遞給形參,實參要有確定的值

形參實參參數類型相同,不同則進行轉換

形參只在函數調用時被分配內存單元,而且不會改變實參的值

函數的返回值:

  1.函數的返回值是通過函數中的return 語句獲得的

  2.函數返回值的類型在定義函數時定義

  3.返回值類型應與函數類型相同,不同時轉換成函數類型

  4.不帶返回值,則應定義為void屬性

數組作為函數參數哦:

  數組元素可以用作函數實參,不能用作形參。因為形參是在函數被調用時臨時分配存儲單元的,數組在內存占連續的一段存儲單元

  數組名作參數(實參和形參)數組名作參數時,傳遞的是數組首元素地址。所以在聲明形參時,不用指定數組大小,可以接一個空方括號。此時形參改變時,實參也改變。

  多維數組名在形參定義時,可以省略第一維大小,其他則不能省。形參實參第二維大小相同。

局部變量和全局變量:

  主函數中定義的變量只在主函數中有效。不同函數中可以使用同名的變量,他們代表不同的對象,互不幹擾。形參也是局部變量

  在函數內部定義的是局部變量,在函數外部定義的是全局變量,在函數調用全局變量時,可以改變全局變量的值。

  若全局變量與局部變量相同,則在局部變量範圍內,全局變量被“屏蔽”

變量的存儲方式:

    全局變量存放在靜態存儲區,在程序開始執行時給全局變量分配存儲區,程序執行完畢釋放。

    動態存儲區存放:函數形參,函數中定義的沒有用static聲明的變量(即自動變量),函數調用時的現場保護和返回地址。函數調用時動態分配存儲空間,函數結束時釋放這些空間。 如果連續調用兩次,分配的空間一般是不同的。

數據的存儲類別:

    auto,statis,register,extern

   局部變量: auto(自動變量):調用函數時,系統給其分配存儲空間,在函數調用結束時自動釋放這些存儲空間。包括:函數中的形參,函數中定義的局部變量

    static (靜態局部變量):希望函數中的局部變量的值在函數調用結束後不消失而繼續保留原值,即其占用的存儲單元不釋放,在下一次調用該函數是,該變量已有值。

    (靜態局部變量只在編譯時賦初值,即只賦值一次,而自動變量在函數每調用一次,就重新給其賦初值。如果不賦初值的話就自動賦‘0’或‘\0’)

    register(寄存器變量):數據存儲在cpu寄存器中,速度快,使用頻度高

    全局變量: extern:擴展外部變量在程序文件中的作用域,也可以將其作用域擴展到其他文件(如源文件)(將外部變量作用域限制在本文件中,只需在定義外部變量時前加static(此時static並不是將其分配在靜態存儲區而是變量作用域的擴展問題))

內部函數和外部函數

  內部函數:該函數只能被本文件中其他函數所調用 。定義前加static

  外部函數:函數可以被其他文件的函數使用,其他文件調用時要進行聲明。定義前加extern,一般省略

c復習過程隨筆七