NDK探究之旅《一》——對jni和NDK的認識android
所謂指針就是 一塊內存內存空間或者說 內存地址函數
好比說咱們的電腦:學習
爲何要用位來表示呢ui
位表示內存地址時所採用的不一樣方式。spa
注意:C99語法中,for循環不支持在()裏面定義int變量值。操作系統
#include <stdio.h> main(){ int i = 3;//申請一快內存地址,大小爲4個byte,用於儲存int類型的數據 printf("int類型所暫居的byte爲:%d\n",sizeof(int)); int* p;//指針類型 //一、申請一塊內存地址,空間爲32位 ,大小爲32位 //二、int* 建立出來p存放一個內存地址(大小爲32位,4個byte就夠用了) //注意:無論任何類型的帶*的變量都是32位的 //三、 建立一個int* 的數據類型,p是他的變量名 //四、p裏面存放的是一塊內存空間的地址 p = &i; printf("i的內存空間的地址爲: 0x%x\n",p); printf("i=%d\n",i); printf("i=%d\n",*p);//取內存空間p裏面的數據 system("pause"); }複製代碼
*的含義有三點
- *緊跟着一種數據類型前面int* 表示的是一種指針變量,指的是取內存控件的地址
若是是跟在一個指針變量的前面 *p,表示的是去內存空間裏面的數據,*p把p地址裏面的數據取出來.net
x*y乘以指針
指針變量: 指的是一個變量,int* p;則p就是指針變量
指針: 一塊內存空間的地址
一些市場上的各類說法——指針和指針變量沒有什麼區別。
準確的來講只有值傳遞,調用子函數的全部操做都是值傳遞
引用傳遞,最終仍是值傳遞,傳遞的是對象的地址
示例代碼:
#include <stdio.h> void changedNum(int i,int j){ printf("i=%d\n",i); printf("j=%d\n",j); int temp; temp = i; i = j; j = temp; printf("i=%d\n",i); printf("j=%d\n",j); } main(){ int i = 3; int j = 5; changedNum(i,j); printf("i=%d\n",i); printf("j=%d\n",j); printf("************************************************\n"); int* p = &i; printf("i的地址爲%d\n",p); printf("改變i的值,並打印p的值\n"); i = 100; printf("i只改變後的地址爲%d\n",p); printf("改變p的值打印I的值\n"); p = &j; printf("改變p的值後去打印:i = %d\n",i); system("pause"); }複製代碼
指針的常見錯誤錯誤
- 使用指針變量時,必須先給其進行負值,在使用
int* p ;//申明出來一個指針變量,用於存放內存地址
printf("p=%d\n",p);
野指針,不容許這樣
double d = 3.222222;
double* p =&d;
不能直接給指針變量進行賦值
下面是錯誤的寫法
doble* p = &2.123123
不能直接用內存地址16進制去賦值(其實和上面同樣)
//錯誤的寫法
int* p =0x123123;
博客地址:
相信本身,沒有作不到的,只有想不到的
若是你以爲此文對您有所幫助,歡迎入羣 QQ交流羣 :232203809
微信公衆號:終端研發部
(歡迎關注學習和交流)