指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序
指針
指針的基本概念
指針的作用: 可以通過指針間接訪問內(nèi)存
-
內(nèi)存編號是從0開始記錄的,一般用十六進制數(shù)字表示
-
可以利用指針變量保存地址
指針變量的定義和使用
指針變量定義語法: 數(shù)據(jù)類型 * 變量名;
#include <iostream> using namespace std; int main() {//1、指針的定義int a = 10; //定義整型變量a//指針定義語法: 數(shù)據(jù)類型 * 變量名 ;int * p;//指針變量賦值p = &a; //指針指向變量a的地址cout << &a << endl; //打印數(shù)據(jù)a的地址cout << p << endl; //打印指針變量p//2、指針的使用//通過*操作指針變量指向的內(nèi)存cout << "*p = " << *p << endl;system("pause");return 0; }指針變量和普通變量的區(qū)別
-
普通變量存放的是數(shù)據(jù),指針變量存放的是地址
-
指針變量可以通過" * "操作符,操作指針變量指向的內(nèi)存空間,這個過程稱為解引用
指針所占內(nèi)存空間
提問:指針也是種數(shù)據(jù)類型,那么這種數(shù)據(jù)類型占用多少內(nèi)存空間?
#include <iostream> using namespace std; int main() {int a = 10;int * p;p = &a; //指針指向數(shù)據(jù)a的地址cout << *p << endl; //* 解引用cout << sizeof(p) << endl;cout << sizeof(char *) << endl;cout << sizeof(float *) << endl;cout << sizeof(double *) << endl;system("pause");return 0; }空指針和野指針
空指針:指針變量指向內(nèi)存中編號為0的空間
用途:初始化指針變量
注意:空指針指向的內(nèi)存是不可以訪問的
野指針:指針變量指向非法的內(nèi)存空間
const修飾指針
const修飾指針有三種情況
const修飾指針 --- 常量指針
const修飾常量 --- 指針常量
const即修飾指針,又修飾常量
指針和數(shù)組
作用:利用指針訪問數(shù)組中元素
#include <iostream> using namespace std; int main() {int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int * p = arr; //指向數(shù)組的指針cout << "第一個元素: " << arr[0] << endl;cout << "指針訪問第一個元素: " << *p << endl;for (int i = 0; i < 10; i++){//利用指針遍歷數(shù)組cout << *p << " ";p++;}cout<<endl;system("pause");return 0; }指針和函數(shù)
作用:利用指針作函數(shù)參數(shù),可以修改實參的值
#include <iostream> using namespace std; //值傳遞 void swap1(int a ,int b) {int temp = a;a = b; b = temp; } //地址傳遞 void swap2(int * p1, int *p2) {int temp = *p1;*p1 = *p2;*p2 = temp; }int main() {int a = 10;int b = 20;swap1(a, b); // 值傳遞不會改變實參swap2(&a, &b); //地址傳遞會改變實參cout << "a = " << a << endl;cout << "b = " << b << endl;system("pause");return 0; }指針、數(shù)組、函數(shù)
案例描述:封裝一個函數(shù),利用冒泡排序,實現(xiàn)對整型數(shù)組的升序排序
例如數(shù)組:int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
int * arr 也可以寫為 int arr[]
#include <iostream> using namespace std; //冒泡排序函數(shù) void bubbleSort(int * arr, int len) //int * arr 也可以寫為int arr[] {for (int i = 0; i < len - 1; i++){for (int j = 0; j < len - 1 - i; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}} }//打印數(shù)組函數(shù) void printArray(int arr[], int len) {for (int i = 0; i < len; i++){cout << arr[i] << " ";}cout<<endl; }int main() {int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };int len = sizeof(arr) / sizeof(int);bubbleSort(arr, len);printArray(arr, len);system("pause");return 0; }總結(jié)
以上是生活随笔為你收集整理的指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 函数||值传递||函数的常见样式||函数
- 下一篇: 结构体案例