JNI由淺入深_2_C語言基礎

 *含義程序員

1.乘法 3*5 
2.定義指針變量 int * p;//定義了一個名字叫p的變量,可以存放int數據類型的地址
3.指針運算符,
    //若是p是一個已經定義好的指針變量則*p表示以p的內容爲地址的變量

 打印數據類型小程序

%d  -  int
%ld – long int
%c  - char
%f -  float
%lf – double
%x – 十六進制輸出 int或者long int或者short int
%o -  八進制輸出
%s – 字符串

三、指針數組

指針就是地址. 熱身小程序 介紹指針
int * p; //p是變量的名字, int * 表示p變量的數據類型是存放int類型的地址的數據類型
//int * p; 不表示定義了一個名字叫作*p的變量
// int * p; 應該這樣理解: p是變量名, int *是數據類型 ,p變量的數據類型是int*
//所謂int * 類型 實際就是存放int變量地址的類型    
int i = 3;
p = &i;
/*1. p保存了i的地址, 所以p指向i
  2. p不是i,i也不是p,修改p的值不影響i的值,修改i的值也不會影響p的值
  3. 若是一個指針變量指向了某個普通變量, 則 *指針變量  就徹底等同於  普通變量
               例子:    
                    若是p是個指針變量,而且p存放了普通變量i的地址則p指向了普通變量i
                    *p     就徹底等同於  i
                    在全部出現*p的地方均可以替換成i
                    在全部出現i的地方均可以替換成*p
                    *p 就是以p的內容爲地址的變量*/
j = *p;  //等價於 j = i;
printf("i = %d, j = %d\n", i, j);

四、指針與數組函數

數組名,下標和指針的關係,指針變量的運算
數組名
int a[5] //a是數組名,5是數組的大小,元素個數
int a[3][4] // 3行4列 a[0][0]就是數組的第一個元素
Int b[5]
A=b ;//錯誤

一維數組名是個指針常量,它存放的是一維數組第一個元素的地址
int a[5];
int a[3][4];
printf("%#X\n",&a[0]);
printf("%#X\n",&a);
下標和指針的關係
若是p是個指針變量 則p[i] 等價於 *(p+i)

五、動態分配內存spa

動態內存分配問題
    傳統數組的缺點
        1.數組長度必須實現指定,
        而且只能是常整數.
        int a[5];
        int len;
        int a[len];//error
        2.傳統形式的數組,程序員無法手動釋放空間
    數組一旦定義,系統爲該數組分配的空間一直存在
    函數運行完畢,數組的空間就被釋放
        3.數組的長度不能在函數運行中動態增長或者縮小    
        4.A函數定義的數組只有在A沒執行完畢前被使用,a函數運行完畢後,a的數組就沒法被其餘函數使用

# include <stdio.h>
# include <malloc.h>  //不能省  malloc 是 memory(內存) allocate(分配)的縮寫
int main(void)
{
    int i = 5; //分配了4個字節 靜態分配   11 行
    int * p = (int *)malloc(4); //12行
        /*
            1. 要使用malloc函數,必須添加malloc.h這個頭文件
            2. malloc函數只有一個形參,而且形參是整型
            3. 4表示請求系統爲本程序分配4個字節
            4. malloc函數只能返回第一個字節的地址
            5. 12行分配了8個字節, p變量佔4個字節, p所指向的內存也佔4個字節
            6. p自己所佔的內存是靜態分配的, p所指向的內存是動態分配的       
        */
    *p = 5; //*p 表明的就是一個int變量, 只不過*p這個整型變量的內存分配方式和11行的i變量的分配方式不一樣
    free(p); //freep(p)表示把p所指向的內存給釋放掉  p自己的內存是靜態的,不能由程序員手動釋放,p自己的內存只能在p變量所在的函數運行終止時由系統自動釋放 
    printf("你們好!\n");
    return 0;
}

六、函數指針 

1.定義int (*pf)(int x, int y);
2.賦值 pf = add;
3.引用 pf(3,5);
相關文章
相關標籤/搜索