1、定義指標
int a = 10;
//指標定義的語法:資料型別 * 指標變數名;
int* p;
//讓指標記錄變數a的位址
p = &a;
//輸出的為16進製制的位址
cout << "指標p為:" << p << endl;
//輸出結果為:
指標p為:0079fbb0
2、使用指標
作用:可以通過解引用的方式來找到指標指向的記憶體
解引用:*p(在指標的前面加 』 *』 ),找到指標指向的記憶體的資料
*p = 1000;
cout << "a = " << a << endl;
cout << "*p = " << *p << endl;
輸出結果為:
a = 1000
*p = 1000
3、指標所占用空間
占用空間:
1)在32位作業系統下:占用4個位元組空間
2)在64位作業系統下:占用8個位元組空間
3)編譯時的作業系統更改方式:解決方案平台上將x86改為x64
int a = 10;
int* p = &a;
//以下兩個輸出結果相同
//原理:變數p的型別就是int*,sizeof()所輸出的就是此指標所占用空間
cout << "sizeof(int*) = " << sizeof(int*) << endl;
cout << "sizeof(int*) = " << sizeof(p) << endl;
輸出結果為:sizeof(int*) = 4
2)注意:空指標是不可以進行訪問的
//0~255之間的記憶體編號是系統占用的,因此不可以訪問
//此時若是輸入:*p = 100; 便會發生編譯錯誤
5、野指標:指標變數指向非法的記憶體空間
int* p = (int*)0x1100;
cout << *p << endl;
注意:空指標和野指標都不是我們申請的空間,因此不要訪問
6、const修飾指標
int a = 10;
int b = 10;
有三種情況:
1)const修飾指標—常量指標
//特點:指標的指向可以修改,但是指標指向的值不可更改
const int* p = &a;
2)const修飾常量—指標常量
//特點:指標的指向不可以修改,但是指標的值可以改
int* const p = &a;
3)const既修飾指標,又修飾常量
//特點:指標的指向、指標的值都不可修改
const int* const p = &a;
7、指標和陣列
int arr[10] = ;
cout << "第乙個元素:" << arr[0] << endl;
//利用指標訪問陣列中的元素
int* p = arr;//陣列名就是陣列的首位址
cout << "利用指標訪問第乙個元素:" << *p << endl;
p++;//指標向後偏移4個位元組
cout << "利用指標訪問第二個元素:" << *p << endl;
cout << "利用指標遍歷陣列:" << endl;
int* p2 = arr;
for (int i = 0; i < 10; i++)
8、指標和函式
1)值傳遞(傳入的引數,實參不變)
2)位址傳遞(傳入的引用引數/指標的位址,實參改變)
void swap02(int *p1, int *p2)
void main()
9、指標、陣列、函式結合例項
問題描述:封裝乙個函式,利用氣泡排序,實現對整型陣列的公升序排序
例如陣列:
//氣泡排序函式
void bubblesort(int* arr, int len)
} }}//列印陣列
void printarray(int * arr,int len)
}void main()
; //陣列長度
int len = sizeof(arr) / sizeof(arr[0]);
bubblesort(arr, len);
printarray(arr, len);
//卡住程式(一般不使用,記憶體開銷大,可移植性差)
system("pause");
}
C 入門基礎學習總結Chapeter01
此工程使用的是vs2019進行學習和使用的 一 首先檔案 新建 專案 二 開啟頁面之後預設的建立之後輸出 hello world 三 進入 部分的學習 1 輸出 在c 程式中輸出一般使用 cout 輸入則是使用 cin 需要注意的是,輸入輸出流都需要引用命名空間std。示例1 using names...
C 入門基礎Chapeter03(函式 陣列)
一 陣列 ps vs2019中是不支援陣列長度是變數的 部分編譯器可行 陣列宣告示例 const int n 100 int num n 1 陣列定義 int num ps 以上的 看似混合了很多種型別,好像會報錯,但是其實並不會報錯,原因是 在c 中字元型和bool型都是用整型表示的。2 初始化一...
C 入門基礎Chapeter07結構體練習題
1 設計乙個英雄的結構體,包括姓名,年齡,性別 建立結構體陣列,陣列中存放5名英雄 通過氣泡排序的演算法,將陣列中的英雄按照年齡進行公升序排列,最終列印排序後的結果。include using namespace std 設計乙個英雄的結構體 struct hero 通過氣泡排序進行公升序排序 vo...