欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

07章-指針--C++基礎(chǔ)入門學(xué)習(xí)筆記

7 指針

7.1 指針基本概念

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

專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)開封免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

7.2 指針變量的定義和使用

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

示例

#include<iostream>
using namespace std;

int main()
{
	//1、定義指針
	int a = 10;
	//2、指定定義的語法:數(shù)據(jù)類型*指針變量;
	int* p;
	//3、讓指針記錄變量的a的地址
	p = &a;
	cout << "a的地址為:" << &a << endl;
	cout << "指針p為:" << p << endl;

	//4、使用指針
	//可以通過解引用的方式來找到指針指向的內(nèi)存
	//指針前*代表解引用,找到指針指向內(nèi)存中的數(shù)據(jù)
	*p = 1000;
	cout << "a = " << a << endl;
	cout << "*p = " << *p << endl;

	system("pause");
	return 0;
}

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

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

  • 在32位操作系統(tǒng)中,占4個字節(jié)空間
  • 在64位操作系統(tǒng)中,占8個字節(jié)空間

示例

#include<iostream>
using namespace std;

int main()
{
	//指針?biāo)嫉膬?nèi)存空間大???
	int a = 10;
	int* p = &a;
	cout << "sizeof int * = " << sizeof(int*) << endl;
	cout << "sizeof int * = " << sizeof(p) << endl;
	system("pause");
	return 0;
}

7.4 空指針和野指針

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

用途:初始化指針變量

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

示例1

#include<iostream>
using namespace std;

int main()
{
	//空指針
	//1、空指針用于給指針變量進(jìn)行初始化
	int* p = NULL;
	//2、空指針是不可以進(jìn)行訪問的
	// 0~255之間的內(nèi)存編號是系統(tǒng)占用的,因此不可以訪問的
	//*p = 100;
	cout << *p << endl;
	system("pause");
	return 0;
}

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

示例2

#include<iostream>
using namespace std;

int main()
{
	//野指針
	//在程序中,避免出現(xiàn)野指針
	int* p = (int*)0x1100;
	cout << *p << endl;
	system("pause");
	return 0;
}

7.5 const修飾指針

const 修飾指針有三種情況:

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

特點(diǎn)

  • 常量指針:const int* p = &a;,特點(diǎn):指針的指向可以修改,但是指針的值不可以修改
  • 指針常量:int* const p = &a;,特點(diǎn):指針的指向不可以改,指針指向的值可以改
  • 既修飾指針又修飾常量:const int* const p =&a;,特點(diǎn):指針指向,和指針指向的值都不可修改。

示例

#include<iostream>
using namespace std;

int main()
{
	//1、const修飾指針
	int a = 10;
	int b = 10;
	const int* p = &a;
	//指針指向的值不可以改,指針的指向可以改
	//*p =20; //錯誤操作
	p = &b; //正確操作

	//2、const修飾常量
	int* const p2 = &a;
	//指針的指向不可以改,指針真相的值可以改
	*p2 = 100;//正確操作
	//p2 = &b;//錯誤操作,指針的指向不可以改

	//3、const修飾指針和常量
	const int* const p2 = &a;
	//指針的指向和指針指向的值都不可以修改
	//*p3 = 10;//錯誤操作
	//p3 = &b;//錯誤操作

	system("pause");
	return 0;
}

技巧:看const右側(cè)緊跟的是指針還是常量。

7.6 指針和數(shù)組

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

示例

#include<iostream>
using namespace std;

int main()
{
	//指針和數(shù)組
	//利用指針訪問數(shù)組中的元素

	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
	cout << "第一個元素為:" << arr[0] << endl;

	int* p = arr; //arr就是數(shù)組的首地址
	cout << "利用指針訪問第一個元素:" << *p << endl;

	p++;//讓指針向后偏移4個字節(jié);
	cout << "利用指針訪問第二個元素:" << *p << endl;

	cout << "利用指針遍歷數(shù)組" << endl;
	int* p2 = arr;
	for (int i = 0; i < 10; i++)
	{
		cout << *p2 << endl;
		p2++;
	}

	system("pause");
	return 0;
}

7.7 指針和函數(shù)

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

#include<iostream>
using namespace std;

//實(shí)現(xiàn)兩個數(shù)字進(jìn)行交換
void swap01(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "swap01 中 a = " << a << endl;
	cout << "swap01 中 b = " << b << endl;
}

void swap02(int* p1, int* p2)
{
	int temp = *p1;
	*p1 = *p2;
	*p2 = temp;
	
}

int main()
{
	//指針和函數(shù)
	//1、值傳遞
	int a = 10;
	int b = 20;
	swap01(a, b);//值傳遞不會改變實(shí)參
	cout << "值傳遞" << endl;
	cout << "main 中 a = " << a << endl;
	cout << "main 中 b = " << b << endl;

	//2、地址傳遞
	swap02(&a, &b);//地址傳遞會改變實(shí)參
	cout << "地址傳遞" << endl;
	cout << "main 中 a = " << a << endl;
	cout << "main 中 b = " << b << endl;

	system("pause");
	return 0;
}

7.8 指針、數(shù)組、函數(shù)

案例描述:封裝一個函數(shù),利用冒泡排序,實(shí)現(xiàn)對整型數(shù)組的升序排列。

例如:int arr[10] = {4,3,6,9,1,2,10,8,7,5};

示例

#include <iostream>
using namespace std;
//冒泡排序函數(shù)
//參數(shù)1:數(shù)組首地址,參數(shù)2:數(shù)組長度
void bubbleSort(int* arr,int len)
{
	for (int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j < len - i - 1; j++)
		{
			//如果j >j+1的值,交換數(shù)字
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

//打印數(shù)組
void printArray(int* arr, int len)
{
	for (int i = 0; i < len ; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
}
int main()
{
	//1、先創(chuàng)建數(shù)組
	int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };

	//數(shù)組長度
	int len = sizeof(arr) / sizeof(arr[0]);
	//2、創(chuàng)建函數(shù),實(shí)現(xiàn)冒泡排序
	bubbleSort(arr,len);

	//3、打印排序后的數(shù)組
	printArray(arr, len);

	system("pause");
	return 0;
}

本文名稱:07章-指針--C++基礎(chǔ)入門學(xué)習(xí)筆記
文章網(wǎng)址:http://chinadenli.net/article40/dsoijeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、外貿(mào)建站、外貿(mào)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、定制開發(fā)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站