C語言之指針

/*
指針 : 專於保存地址的數據結構,佔用8個字節,而且能夠經過指針保存的地址訪問指針指向的內存空間的值;
    定義格式 : 指針所指向的數據類型 *指針名稱;
    初始化 ; 1,定義的同時初始化,如 : int *[n]numP = #    //定義幾級指針,則寫幾個"*";
             2,定義後,再初始化,如 : int *[n]numP; numP = #
             //注 : 變量名稱每每決定了從內存哪裏開始取值;數據類型決定了從內存取值時,決定要取多少個字節的值,
                    固然取出來的只是二進制而已;而佔位符則決定了將取出來的二進制轉換成怎樣的形式進行輸出;
指向數組的指針 : 
    定義格式 : 數組數據類型 *指針名稱;
    //注 : 數組名稱保存的即爲數組的地址,即爲數組中第一個元素的地址;所以,在對指向數組的指針初始化時,可直接將數組名稱賦值給指針便可;
    //注 : 指針可作加減運算,如某個指針加1,這裏的1指的是單位1,也即指針所指向的數據類型佔用的字節數;
    案例 : 利用指針遍歷字符串 :
    char string[] = "acssd";
    char *stringP = string;
    while (*stringP != '\0')
    {
        printf("%c",*stringP);
        stringP++;
    }
    printf("\n");
指針和字符串 :
    保存字符串的兩種方式 :
        經過數組保存字符串,如 : char string[] = "adsdds";    //字符串保存位置: 棧中,生命週期 : 自建立起至return或"}";
        經過指針保存字符串,如 : char *string = "assd";    //字符串保存位置 : 常量區中,生命週期 : 自建立起,始終存在,且在常量區中,值相同的變量指向同一塊內存空間;
                                                          //應用場景 : 當須要頻繁使用某一個常量時,可避免內存空間的頻繁建立和釋放,提高程序執行效率;
指針數組 : 就是保存有多個指針的數組
    指針指向的數據類型 *數組名稱[元素個數];
指向函數的指針 : 
    //注 : 函數也會佔據一塊內存空間,所以函數也會有本身的地址,保存在函數名中;
    定義格式 : 函數返回值的數據類型 (*指針名稱) (形參)    //形參名稱可省略不寫;
    經過指針調用函數 : 1,(*指針名稱)(實參)
                       2,指針名稱(實參)
    應用場景 : 實現入口或類;
        常可經過指針實現一個入口,根據用戶需求不一樣,調用不一樣的函數以實現不一樣的動做或功能.由此,咱們也能夠理解"類"這一律念,如在python中的print函數,時間上print函數
        僅僅只是一個打印入口而已,print函數會根據用戶要求打印的內容不一樣,調用不一樣的打印函數,打印相應的內容,如打印整型數據和打印浮點型數據,調用的打印函數就不一樣;
*/
相關文章
相關標籤/搜索