摘要:不會檢查數(shù)組下標越界數(shù)組的特點元素數(shù)據(jù)類型相同元素在內(nèi)存中連續(xù)的數(shù)組名代表首元素首地址指針與數(shù)組的關系堆區(qū)內(nèi)存的申請及釋放在堆區(qū)分配學生學號數(shù)組自己申請,還需要自己釋放歡迎加入學習交流群,大家一起學習交流。
什么是JNI
JNI Java Native interface 一種協(xié)議 提供一套編程框架,java和本地代碼相互調(diào)用
為什么需要JNI
1.操作底層硬件,Android平臺上傳感器
2.應用程序對運行效率有要求,圖形渲染,音視頻解碼
3.復用成熟C開源軟件,OpenGL,OpenSSL,SQLite3,FFmpeg
4.安全性要求,本地C代碼反編譯困難
C基本數(shù)據(jù)類型
c里面char占1byte,而java占2bytes;
*C里面的long占4bytes ,java中占8bytes
c里面沒有boolean類型,可以用unsigned char代替
C語言輸入輸出函數(shù)
都需要包含頭文件stdio.h
格式化輸出函數(shù)printf d u o x 整數(shù),c s,f
%d 十進制有符號 int
%u 十進制無符號 unsigned int
%o 八進制無符號 unsigned int
%x 十六進制無符號 unsigned int
在%o和%x中間加#,輸出前導0,0x
%c 輸出一個字符
%s 輸出一個字符串,若干個
若要輸出long和double類型,在相應字符前l(fā)
%ld %lf
輸出short類型用%hd
%p輸出變量的地址
格式化輸入函數(shù)scanf d c s f
輸入其它數(shù)據(jù)
printf("請輸入整數(shù):");
scanf("%d",&i);//&i告訴scanf輸入數(shù)據(jù)存到哪
輸入字符串寫法
char buf[10];//字符數(shù)組,可以保存字符串 "0"作為字符串的結束標志
printf("輸入字符串:");
scanf("%s",buf);//數(shù)組名代表數(shù)組首元素首地址 buf[0] &buf[0] <=> buf
printf("buf:%sn",buf);
什么是指針
1.內(nèi)存:最小單位1byte,8bits,一維線性分布
32cpu 4G內(nèi)存的地址空間
1k = 1024bytes 2^10
1M = 1024k = 1024 * 1024 bytess 2^20
1G = 1024M = 1024 1024 1024 bytes 2^30
4G = 4 1G = 2^2 2^30 = 2^32
2.內(nèi)存單元:通過內(nèi)存編號來區(qū)分管理,內(nèi)存單元的編號可以作為內(nèi)存單元的地址
3.指針:在C中把內(nèi)存單元的編號稱指針
指針變量
普通變量:一般數(shù)據(jù)
指針變量:保存內(nèi)存單元地址,可以利用指針運算符*訪問內(nèi)存
*的三種應用含義
3 5 : 剩法
int *p; : 定義指針變量,區(qū)分了變量類型
p = i; 取對象運算符
指針的指向
指向:如果一個指針變量保存了一個對應類型變量的首地址,指針變量指向這個變量,可以用指針運算符*訪問指向變量。
int i = 20; char c = "k"; int *p; char *q; p = &i;//指針變量p指向i q = &c; //p = &c; //p = (int *)&c;//如果真要保存需要強轉 (要轉的指針類型) //*p <=> i printf("i = %d ",*p);
指針
地址,指針變量在不影響理解時,都稱為指針
指針的誤用
指針沒有合法指向,初始值NULL
混用指向不同類型的指針,如果真要把不同類型的地址賦給指針變量,需要強轉
關于C字符串存儲和操作
char buf[10];字符數(shù)組用來保存字符串;
char *p = buf;字符指針可以保存字符串首地址,從而找到并處理字符串
指針變量運算
指針變量加減一個整數(shù)n,指針向高地址或低地址移動n個對象,要求在一段連續(xù)內(nèi)存空間上移動
數(shù)組
數(shù)組:相同數(shù)據(jù)類型變量的集合。
C不會檢查數(shù)組下標越界!!!
int arr[20];
arr[19];
數(shù)組的特點:
1.元素數(shù)據(jù)類型相同
2.元素在內(nèi)存中連續(xù)的
3.數(shù)組名代表首元素首地址 arr <=> &arr[0]
指針與數(shù)組的關系
a[i] <=> *(a + i) <=> *(p + i) <=> p[i] p[i] => *(p + i)
堆區(qū)內(nèi)存的申請及釋放
int *pid = (int *)malloc(num * sizeof(int)); //在堆區(qū)分配學生學號數(shù)組 pid = (int *)realloc(pid,num * sizeof(int)); free(pid);//自己申請,還需要自己釋放
歡迎加入學習交流群569772982,大家一起學習交流。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70537.html
摘要:介紹了在中配置的開發(fā)環(huán)境開發(fā)環(huán)境配置,開發(fā)環(huán)境配置完成之后,就要寫一下著名的程序了。尤其是但是并不妨礙你使用其他語言,只要調(diào)用約定支持就可以了。是指定所在的目錄,項目成功之后,會在目錄里生成文件。是包名加上類名。 介紹了在Android Studio中配置NDK的開發(fā)環(huán)境:Android Studio NDK開發(fā)-環(huán)境配置,NDK開發(fā)環(huán)境配置完成之后,就要寫一下著名的Hello Wor...
摘要:以下將以一個實際例子展示通過調(diào)用打印主要記錄實現(xiàn)的過程和方法,對其中的一些原理和規(guī)范不做具體展開。指向在此代碼中實例化的對象的一個句柄,相當于指針。加載本地共享庫運行結果如下傳遞參數(shù)接下來看一下如何通過向傳遞參數(shù)。 showImg(https://segmentfault.com/img/remote/1460000008935007); 文章為本人編纂,轉載請聯(lián)系作者并注明出處。 在...
閱讀 1633·2021-09-02 15:11
閱讀 1972·2019-08-30 14:04
閱讀 2558·2019-08-27 10:52
閱讀 1574·2019-08-26 11:52
閱讀 1196·2019-08-23 15:26
閱讀 2614·2019-08-23 15:09
閱讀 2603·2019-08-23 12:07
閱讀 2232·2019-08-22 18:41