8.5 指針數組、指向指針的指針
1.指針數組指的是一個數組,其元素均為指針類型數據,也就是說,指針數組中的每一個元素都是指針變量。指針數組的定義形式為:
類型標識 *數組名[數組長度說明]
指針數組可以使字符串處理更加方便。
2.指向指針的指針是指指向指針數據的指針變量,一個指向指針數據的指針變量的一般形式為:
類型標識 * *p;
8.6 main函數的命令參數
指針數組的一個重要應用是作為main函數的形參,一般來說,main函數后的括號中是空的,即沒有參數。實際上main可以有參數,如:
main(argc,argv)
其中,argc和argv就是main函數的形參。其他函數形參的值可以通過函數調用語句的實參中得到,由于main函數是由系統調用的,因而main函數的形參值不能從程序中得到,但可以在操作系統狀態下,將實參和命令一起給出,從而使main函數的形參得到值。命令行的一般形式為:
命令名 參數1 參數2…參數n
命令名和各參數之間用空格分隔開。
8.7 動態存儲分配
在C語言中有一種稱為“動態存儲分配”的內存空間分配方式:程序在執行期間需要存儲空間時,通過“申請”分配指定的內存空間;當閑置不用時,可隨時將其釋放,由系統另作它用。本節介紹C語言中動態分配系統的主要函數:malloc()、calloc()、free()及realloc(),使用這些函數時,必須在程序開頭包含文件stdlib.h。
1.主內存分配函數—malloc()
函數格式:void*malloc(unsigned size);
函數功能:從內存中分配一大小為size字節的塊。
參數說明:size為無符號整型,用于指定需要分配的內存空間的字節數。
返回值:新分配內存的地址,如無足夠的內存可分配,則返回NULL。
說明:當size為0時,返回NULL。
2.主內存分配函數——calloc()
函數格式:void*malloc(unsigned n,unsigned size);
函數功能:從內存中分配n個同一類型數據項的連續存儲空間,每個數據項的大小為size字節。
參數說明:n為無符號整型,用于指定分配的數據項的個數size為無符號整型,用于指定需要分配的數據項所占內存空間的字節數。
返回值:新分配內存的地址,如無足夠的內存可分配,則返回NULL。
3.重新分配內存空間函數——realloc()
函數格式:void*realloc(void *block,unsigned size);
函數功能:將block所指內存區的大小改為size字節的塊。
參數說明:block為void類型的指針,指向內存中某塊,size為無符號整型,用于指定需要分配的內存空間的字節數。
返回值:新分配內存的地址,如無足夠的內存可分配,則返回NULL。
4.釋放內存函數—free()
函數格式:void free(void*block);
函數功能:將calloc()、malloc()及realloc()函數所分配的內存空間釋放為自由空間。
參數說明:block為void類型的指針,指向要釋放的內存空間。
返回值:無。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |