最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++中的指針最全總結(jié)

 更新時(shí)間:2024年04月27日 09:05:02   作者:月星過(guò)億  
指針是整個(gè)C++的精髓所在,只有精通了指針才可以說(shuō)是掌握了C++,可以說(shuō)學(xué)習(xí)C++的過(guò)程是個(gè)熟練掌握和使用指針的過(guò)程,下面這篇文章主要給大家介紹了關(guān)于c++中指針的相關(guān)資料,需要的朋友可以參考下

一、指針的基本概念

指針的作用:可以通過(guò)指針間接訪問內(nèi)存

  • 內(nèi)存編號(hào)是從0開始記錄的,一般采用16進(jìn)制數(shù)字表示。
  • 可以利用指針變量保存地址。

二、指針變量的定義和使用

指針變量定義語(yǔ)法: 數(shù)據(jù)類型  * 變量名

#include<iostream>
using namespace std;
int main()
{
	//1.定義一個(gè)指針
	int a = 10;
	//指針定義的語(yǔ)法: 數(shù)據(jù)類型 * 指針變量名 ;
	int* p;
	//讓指針記錄變量a的地址
	p = &a;
	cout << "a的地址是:" << &a << endl;
	cout << "指針p指向的地址是:" << p << endl;

	//2.如何使用指針

	//可以通過(guò)解引用的方式來(lái)找到指針指向的內(nèi)存
	//指針恰加 * 代表解引用,找到指針指向的內(nèi)存中的數(shù)據(jù)
	*p = 1000;//將指針指向的內(nèi)存中的數(shù)據(jù)修改為1000
	cout << "a的值是:" << a << endl;
	cout << "指針p指向的地址中的值是:" << *p << endl;
	system("pause");
	return 0;

}

三、指針?biāo)嫉膬?nèi)存空間

提問:指針也是種數(shù)據(jù)類型,那么這種數(shù)據(jù)類型占用多少內(nèi)存空間?

#include<iostream>
using namespace std;
int main()
{
	// 指針?biāo)嫉膬?nèi)存空間
	int a = 10;
	//int* p;
	//p = &a;
	int* p = &a;
	//在32位操作系統(tǒng)下,指針是占用4個(gè)字節(jié)空間大小,不管是什么數(shù)據(jù)類型
	//在64位操作系統(tǒng)下,指針是占用8個(gè)字節(jié)空間大小,不管是什么數(shù)據(jù)類型
	cout<<"sizeof(int *)="<<sizeof(p)<<endl;
	cout << "sizeof(int *)=" << sizeof(int *) << endl;
	cout << "sizeof(int *)=" << sizeof(float *) << endl;
	cout << "sizeof(int *)=" << sizeof(double *) << endl;
	cout << "sizeof(int *)=" << sizeof(char *) << endl;
	system("pause");
	return 0;
}

四、空指針和野指針

空指針:指針變量指向內(nèi)存編號(hào)為0的空間

用途:初始化指針變量

注意:空指針指向的內(nèi)存是不可以訪問的

4.1 空指針

#include<iostream>
using namespace std;
int main()
{
	//空指針
	//1.空指針用于給指針變量進(jìn)行初始化
	int* p = NULL;
	//2.空指針是不能進(jìn)行訪問的
	//0~255之間的內(nèi)存編號(hào)是系統(tǒng)占用的,因此不可以訪問
	*p=100; //error: dereferencing pointer to incomplete type 'int'


	system("pause");
	return 0;


}

 4.2 野指針

野指針:指針變量指向非法的內(nèi)存空間

注意:空指針野指針都不是我們申請(qǐng)的空間,因此不需要訪問。

#include<iostream>
using namespace std;
int main()
{
	//野指針
	//在程序中,盡量避免出現(xiàn)野指針
	int *p =(int*)0x1100;

	cout<<*p<<endl; //輸出地址為0x1100處的值,此處為0,所以會(huì)出現(xiàn)野指針錯(cuò)誤
	system("pause");
	return 0;

}

五、const修飾指針

const修飾指針有三種情況:

  • const修飾指針 ----常量指針
  • const修飾常量 ---指針常量
  • const即修飾指針,又修飾常量

#include <iostream>
using namespace std;

int main()
{
	//1.const修飾指針
	int a = 10;
	int b = 10;
	const int* p = &a; //指向常量的指針
	//*p = 20; //錯(cuò)誤,不能修改常量指針指向的值
	p = &b; //正確,可以修改指針指向的值
	//2.const修飾常量
	int * const p2 = &a; //指針指向常量,不能修改指針指向的方向,指針指向的值可以改
	*p2 = 20; //正確,可以修改指針指向的值
	//p2 = &b; //錯(cuò)誤,不能修改指針指向的方向

	//3.const修飾指針和常量
	//指針指向和指針指向的值都不能修改,只能讀取
	const int * const p3=&a;
	//*p3 = 20; //錯(cuò)誤,不能修改指針指向的值
	//p3 = &b; //錯(cuò)誤,不能修改指針指向的方向
	system("pause");
	return 0;
}

六、指針和數(shù)組

作用:利用指針訪問數(shù)組中元素

#include <iostream>
using namespace std;

int main() {
	//指針和數(shù)組
	//利用指針訪問數(shù)組中的元素
	int arr[10]= {1,2,3,4,5,6,7,8,9,10};
	cout<<"數(shù)組中的第一個(gè)元素:"<<arr[0]<<endl;
	int* p = arr;//arr就是數(shù)組的首地址
	cout<<"數(shù)組中的第一個(gè)元素的地址:"<<*p<<endl;
	p++;//指向數(shù)組的第二個(gè)元素
	cout<<"數(shù)組中的第二個(gè)元素的地址:"<<*p<<endl;
	p--;//指向數(shù)組的第一個(gè)元素
	cout << "利用指針遍歷數(shù)組" << endl;
	for (int i = 0; i < 10; i++) {
		cout << *(p + i) << " ";
	}
	cout << endl;

	system("pause");
	return 0;
}

七、指針和函數(shù)

作用:利用指針做函數(shù)參數(shù),可以修改實(shí)參的值

#include<iostream>
using namespace std;
//實(shí)現(xiàn)兩個(gè)數(shù)字進(jìn)行交換
void swap01(int a, int b) {
	int temp = a;
	a = b;	
	b = temp;
	cout << "a=" << a << " b=" << b << endl;
}
void swap02(int* a, int* b) {
	int temp = *a;
	*a = *b;
	*b = temp;
}

int main() {
	//指針和函數(shù)
	//1.值傳遞
	int a = 10;
	int b = 20;
	swap01(a, b);
	cout << "a=" << a << " b=" << b << endl; //輸出結(jié)果為 a=20 b=10
	//2.地址傳遞
	//實(shí)參的值會(huì)發(fā)生改變
	swap02(&a, &b);
	cout << "a=" << a << " b=" << b << endl; //輸出結(jié)果為 a=20 b=10


	system("pause");
	return 0;
}

八、指針、數(shù)組、函數(shù)(案例)

#include<iostream>
using namespace std;
//冒泡排序函數(shù)
void bubbleSort(int* arr, int len) {
	{
		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;
				}
			}
		}
	}
}
int main()
{
	//1.先常見一個(gè)數(shù)組
	int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
	//2.創(chuàng)建函數(shù),實(shí)現(xiàn)冒泡排序
	int len = sizeof(arr) / sizeof(arr[0]);

	//3.調(diào)用函數(shù),對(duì)數(shù)組進(jìn)行排序
	bubbleSort(arr, len);
	cout << "排序后的數(shù)組為:";
	for (int i = 0; i < len; i++) {
		cout << arr[i] << " ";
	}
	cout << endl;	

system("pause");
return 0;
}

總結(jié)

到此這篇關(guān)于c++中指針的文章就介紹到這了,更多相關(guān)c++中指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++空類詳解

    C++空類詳解

    以下是對(duì)C++中的空類進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • 在matlab中實(shí)現(xiàn)for循環(huán)的方法

    在matlab中實(shí)現(xiàn)for循環(huán)的方法

    for循環(huán)用來(lái)循環(huán)處理數(shù)據(jù),break用于終止離它最近的一層for循環(huán),continue用于跳過(guò)離它最近的一層for循環(huán),接著執(zhí)行下一次循環(huán),本文重點(diǎn)給大家介紹在matlab中實(shí)現(xiàn)for循環(huán)的方法,感興趣的朋友一起看看吧
    2021-11-11
  • C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文)

    C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文)

    這篇文章主要介紹了C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文),需要的朋友可以參考下
    2016-06-06
  • C++20中的結(jié)構(gòu)化綁定類型示例詳解

    C++20中的結(jié)構(gòu)化綁定類型示例詳解

    這篇文章主要為大家介紹了C++20中的結(jié)構(gòu)化綁定類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Qt?CEF融合技QCefView使用教程(推薦)

    Qt?CEF融合技QCefView使用教程(推薦)

    QCefView是一個(gè)與Chromium?Embedded?Framework集成的Qt第三方開源庫(kù),LGPL許可,可以在項(xiàng)目中免費(fèi)使用,功能類似CEF、QWebEngineView,提供C++和web交互的能力,本文給大家介紹Qt?CEF融合技QCefView使用教程,感興趣的朋友參考下吧
    2021-12-12
  • C語(yǔ)言中變參函數(shù)傳參的實(shí)現(xiàn)示例

    C語(yǔ)言中變參函數(shù)傳參的實(shí)現(xiàn)示例

    本文主要介紹了C語(yǔ)言中變參函數(shù)傳參,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語(yǔ)言之整數(shù)劃分問題(遞歸法)實(shí)例代碼

    C語(yǔ)言之整數(shù)劃分問題(遞歸法)實(shí)例代碼

    這篇文章主要介紹了C語(yǔ)言之整數(shù)劃分問題(遞歸法)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C++超詳細(xì)講解內(nèi)存空間分配與this指針

    C++超詳細(xì)講解內(nèi)存空間分配與this指針

    this?指針在C++類和對(duì)象中是個(gè)很方便實(shí)用的關(guān)鍵字,可以簡(jiǎn)化對(duì)象成員屬性的調(diào)用,使代碼表達(dá)的含義更加準(zhǔn)確;在之前的學(xué)習(xí)中我們都可以判斷變量所占內(nèi)存空間大小,那么我們創(chuàng)建的類對(duì)象所占的內(nèi)存空間怎么計(jì)算呢?想知道this的妙用和類對(duì)象占用的內(nèi)存空間就來(lái)跟我學(xué)習(xí)吧
    2022-05-05
  • 淺析c語(yǔ)言中的內(nèi)存

    淺析c語(yǔ)言中的內(nèi)存

    在c++中,內(nèi)存分為5個(gè)區(qū),分別是棧區(qū),堆區(qū),自由存儲(chǔ)區(qū),全局/靜態(tài)存儲(chǔ)區(qū)和常量存儲(chǔ)區(qū).
    2017-09-09
  • VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ)

    VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ)

    本文主要介紹了VS2017+Qt5+Opencv3.4調(diào)用攝像頭拍照并存儲(chǔ),實(shí)現(xiàn)了視頻,拍照,保存這三個(gè)功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評(píng)論

邯郸县| 湄潭县| 伊宁县| 常宁市| 蒙山县| 玛纳斯县| 涿州市| 郎溪县| 阜城县| 乌兰县| 石首市| 英超| 察隅县| 偃师市| 桦南县| 凤山市| 东莞市| 屯留县| 红安县| 堆龙德庆县| 合川市| 正镶白旗| 桦南县| 大田县| 堆龙德庆县| 靖远县| 和平区| 军事| 吉安县| 工布江达县| 丹江口市| 托克逊县| 江孜县| 东丽区| 施秉县| 仪陇县| 石棉县| 花垣县| 定南县| 通化县| 泰顺县|