1,指標運算
算術運算:指標是乙個用數值表示的位址。可以進行四種算術運算:++--+
-//指標的每一次遞增,它就會指向下乙個元素的儲存單元
//指標的每一次遞減,它就會指向前乙個元素的儲存單元
//指標在遞增和遞減時,跳躍的位元組數(步長),取決於指標所指向變數資料型別長度。
關係運算:指標可以用關係運算子進行比較,如:==
<
>
【注意:如果p1和p2指向兩個相關的變數,比如在同乙個陣列,則可對p1和p2比較大小】
//對相關變數的指標進行比較,才有意義
//大於小於常用於陣列,全等一般用於判斷指標是否為null
2,動態記憶體分配動態記憶體:指在堆空間分配記憶體【注意:靜態記憶體指的是在棧空間分配記憶體】
//區域性變數、形參是在棧上分配的,自動申請和釋放//動態記憶體需要自己手動分配和釋放
動態記憶體分配的意義:
//c語言中的一切操作都是基於記憶體的
//變數和陣列都是記憶體的別名
//定義陣列時,必須指定陣列的大小,使用動態記憶體分配可以在執行時調整大小
//函式結束之後,不希望變數的記憶體被釋放
3,動態記憶體分配方法【注意:不要改變動態記憶體分配了的指標的指向】
1,首先包含stdlib.h標頭檔案
2,使用函式
·malloc void
*malloc
(size_t _size)
;//功能:在堆區申請大小為size位元組的連續記憶體【注意:不會對記憶體進行初始化】
例子: #include
#include
#include
//包含memset函式
intmain()
memset
(pn,0,
sizeof
(int)*
5);//將動態記憶體分配的空間全部初始化為0..
.free
(pn)
; pn=
null;}
·calloc void
*calloc
(size_t _count,size_t _size)
;//功能:和malloc相同,申請count個大小為size的連續記憶體,【並把記憶體全部初始化為0】
例子: #include
#include
intmain()
...free
(pn)
; pn=
null;}
·realloc void
*realloc
(void
* _black,size_t _size)
;//功能:把用以上兩個函式申請的記憶體(_black指向的),重新申請大小(size);
//如果size大於原記憶體的大小,則新分配的記憶體不會初始化;如果size小於原記憶體大小,會導致資料丟失
例子: #include
#include
#include
//包含memset函式
intmain()
memset
(pn,0,
sizeof
(int)*
5);//將動態記憶體分配的空間全部初始化為0
//如果還需新增記憶體if(
!realloc
(pn,
sizeof
(int)*
6))*
(pn +5)
=3;//給新分配的記憶體初始化..
.free
(pn)
; pn=
null;}
·free void
free
(void
* _block)
;//功能:釋放malloc、calloc或realloc申請的記憶體。如果傳遞的引數是乙個空指標,則不會執行任何操作
注意事項:
//申請之後一定要記得釋放,否則會導致記憶體洩漏
//不要重複釋放同一記憶體
//釋放之後。一般會把指標置為null(可以避免釋放後誤用)
3,memset void
*memset
(void
* _dst,
int _val,size_t _size)
;//功能:作用是在一段記憶體塊中填充val這個值//常用來清零操作
//引數:dst表示要初始化的記憶體;val表示對每個位元組填充的值;size表示總共初始化多少個位元組數
4,memcpy void
*memcpy
(void
* _dst,
void
const
* _src,size_t _size)
;//功能:和strcpy類似,memcpy用於記憶體拷貝,size表示要拷貝的位元組數
4,大端模式和小端模式
大端和小端:表示資料在儲存器中的存放順序;
高位0x12345678
低位//該儲存模式類似於把資料當作字串處理:位址由小向大增加,資料從高位往低位存放
大端模式圖:
大端模式:
低位址12
3456
78高位址
//該模式將位址的高低和資料位權有效結合,高位址部分權值高,低位址部分權值低
小端模式圖:
小端模式:
低位址78
5634
12高位址
5,typedef
1
,typedef是給型別取別名
2,定義:
typedef 型別 別名;
//typedef int int;int就是我們定義的新型別名
//typedef int(*parr)[5];parr就是定義的陣列指標型別
//typedef void(*pfuna)(int a);
6,陣列指標定義方式:
資料型別 (
*變數名)
[size]
;//是乙個指標,指向乙個陣列
7,指標陣列定義方式:
資料型別* 變數名[size]
;//陣列裡存的都是指標
8,二維陣列指標1,最大儲存單元:乙個指向一維陣列的指標
例子:int a[2]
[3]=
;int
(*p)[3
]=a;
10,指標函式指標函式:返回值為指標型別的函式;
注意://不要返回臨時變數的位址
第十課學習
按鍵在未按下時,處於一種高電平狀態,一般這種情況下,其對io口的電平一致,則不會產生任何效果,只有在按下狀態時,由於與接地的迴路貫通,故相當於微控制器的io口直接接地。從原理圖上看,之所以要接keyin1 keyin4外接至按鍵中,主要原因是為了獲取按鍵的狀態,因為我們只能獲取微控制器的io口狀態,...
R語言學習 第十課 相關分析
1.相關係數的估計和檢驗 相關係數作為隨機變數之間相關程度的度量指標,能刻畫線性關係的相關程度 對於二維隨機變數,相關係數的乙個矩估計,也是樣本相關係數為 計算檢驗的統計量 x y n 按照公式設定分子 numerator 按照公式設定分母 denominator 計算出相關係數r r r 1 0....
第十課 邊框
無邊框 border style none 虛線邊框 border style dotted 虛線邊框 border style dashed 實線邊框 border style solid 雙邊框 border style double 凹槽邊框 border style groove 壟狀邊框 ...