真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【C語(yǔ)言—指針】-創(chuàng)新互聯(lián)

C語(yǔ)言-關(guān)于指針
  • 1.指針是什么?
    • 1.1概念
    • 1.2指針的大小
    • 1.3指針類(lèi)型的意義
  • 2.野指針
    • 2.1野指針產(chǎn)生的原因
    • 2.2如何規(guī)避野指
  • 3.指針運(yùn)算
    • 3.1指針+-整數(shù)
    • 3.2指針-指針
  • 4.字符指針
  • 5.指針和數(shù)組
    • 5.1數(shù)組名
    • 5.2指針數(shù)組
    • 5.3數(shù)組指針
  • 6.數(shù)組參數(shù),指針參數(shù)
    • 6.1一維數(shù)組傳參
    • 6.2二維數(shù)組傳參
    • 6.3指針傳參
    • 6.4二級(jí)指針傳參
  • 7.函數(shù)指針
  • 8.函數(shù)指針數(shù)組
    • *8.1指向函數(shù)指針數(shù)組的指針

銀州網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
1.指針是什么? 1.1概念

簡(jiǎn)單的說(shuō):指針就是個(gè)變量,這個(gè)變量里存放著內(nèi)存單元的地址(編號(hào)),指針就是地址。

1.2指針的大小

指針在32位平臺(tái)是4個(gè)字節(jié),在64位平臺(tái)是8個(gè)字節(jié)
在這里插入圖片描述

1.3指針類(lèi)型的意義

1.指針類(lèi)型決定了指針進(jìn)行解引用操作時(shí),能夠訪問(wèn)空間的大小。當(dāng)
int* p;p能夠訪問(wèn)4個(gè)字節(jié)
char
p;p能夠訪問(wèn)1個(gè)字節(jié)
double
p; *p能夠訪問(wèn)8個(gè)字節(jié)

int * 可以訪問(wèn)4個(gè)字節(jié)的空間,如圖所示:
int* 可以訪問(wèn)4個(gè)字節(jié)
char * 可以訪問(wèn)4個(gè)字節(jié)的空間,如圖所示:
在這里插入圖片描述
指針±整數(shù)
在這里插入圖片描述
指針類(lèi)型決定了:指針走一步能走多遠(yuǎn)(指針的步長(zhǎng))
int* p; p+1 - - - >4(字節(jié))
char* p; p+1- - ->1(字節(jié))
double* p; p+1- - ->8(字節(jié))
總結(jié):指針的類(lèi)型決定了指針向前或者向后走一步有多大(距離:字節(jié))
1.當(dāng)一個(gè)int * 的指針+1,跳過(guò)4個(gè)字節(jié)
1.當(dāng)一個(gè)char * 的指針+1,跳過(guò)1個(gè)字節(jié)

2.野指針

概念:野指針就是指針指向的位置是不可知的(隨機(jī)的,不正確的,沒(méi)有明確的限制)

2.1野指針產(chǎn)生的原因

1.指針未被初始化
在這里插入圖片描述
1.指針越界訪問(wèn)
在這里插入圖片描述
1.指針指向內(nèi)存空間釋放了
在這里插入圖片描述
注:把變量a的地址通過(guò)text()函數(shù)將地址傳給指針p,因?yàn)槌隽藅est()函數(shù),變量a的地址就釋放,所以通過(guò)指針無(wú)法訪問(wèn)原先變量a的空間,p指針就變成了野指針。

2.2如何規(guī)避野指

1.指針變量初始化,把指針變量賦值成空指針
2.小心指針越界
3.指針 指向的空間釋放時(shí)要制成空指針
4.指針使用之前檢查其合法性

3.指針運(yùn)算 3.1指針±整數(shù)

在這里插入圖片描述
result:1 2 3 4 5 6 7 8 9 10

3.2指針-指針

指針 - 指針(大指針 - 小指針)是兩個(gè)指針間元素的個(gè)數(shù)。
前提:兩個(gè)指針必須指向同一個(gè)內(nèi)存空間
在這里插入圖片描述

4.字符指針

在這里插入圖片描述

5.指針和數(shù)組 5.1數(shù)組名

1.在絕大多數(shù)情況下數(shù)組名是首元素地址
但也有特殊情況:
1.&arr(&數(shù)組名),其中數(shù)組名不是首元素地址,數(shù)組名表示整個(gè)數(shù)組,&數(shù)組名取出的是整個(gè)數(shù)組的地址
2.sizeof(arr)(sizeof(數(shù)組名)),數(shù)組名表示的是整個(gè)數(shù)組,sizeof(數(shù)組名)計(jì)算的是整個(gè)數(shù)組的大小
&arr與arr的區(qū)別
在這里插入圖片描述

5.2指針數(shù)組

概念:首先它是一個(gè)數(shù)組,是用來(lái)存放指針變量的,每個(gè)元素是一個(gè)指針。


在這里插入圖片描述

5.3數(shù)組指針

概念:指向數(shù)組的指針,它本質(zhì)是一個(gè)指針。
在這里插入圖片描述
注釋?zhuān)?/font>

int (*p)[10];
//p先和*結(jié)合,說(shuō)明p是一個(gè)指針變量,
//然后指向的是一個(gè)大小為10個(gè)整型的數(shù)組,
//所以p是一個(gè)指針,指向一個(gè)數(shù)組,叫做數(shù)組指針

在這里插入圖片描述
數(shù)組傳參的兩種方式:
1.比如一個(gè)二維數(shù)組 arr[3][5],首先通過(guò)函數(shù)傳入arr,在子函數(shù)中拿int arr[3][5]接收。
1.比如一個(gè)二維數(shù)組 arr[3][5],首先通過(guò)函數(shù)傳入arr,在子函數(shù)中拿int (*p)[5] (數(shù)組指針)接收。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
注釋?zhuān)?br />一個(gè)二維數(shù)組的首元素地址不是數(shù)組的中的第一個(gè)數(shù),拿arr[3][5] 舉例arr的首元素是二維數(shù)組的第一行,不是1,所以傳參傳過(guò)去要用一個(gè)數(shù)組指針(int(*p)[5])去接收。

遍歷一維數(shù)組的多種寫(xiě)法
在這里插入圖片描述

遍歷二維數(shù)組的多種寫(xiě)法
在這里插入圖片描述

6.數(shù)組參數(shù),指針參數(shù) 6.1一維數(shù)組傳參

一維整型數(shù)組傳參的三種方式:

void test(int arr[])
{//方式1:用一個(gè)一維數(shù)組接收
}
void test(int arr[10])
{//方式2:用一個(gè)和傳過(guò)來(lái)元素個(gè)數(shù)一樣的數(shù)組來(lái)接收
}
void test(int *arr)
{//方式3:用一個(gè)指針變量來(lái)接收
}
int main()
{int arr[10] = {0};
	test(arr);
}

一維指針數(shù)組傳參的三種方式:

void test2(int* arr[20])
{//方式1:用一個(gè)指針數(shù)組來(lái)接收
}
void test2(int* *arr2)
{//方式2:用二級(jí)指針來(lái)接收
}
int main()
{int* arr2[20] = {0};
	test2(arr2);//一個(gè)指針的地址
}
6.2二維數(shù)組傳參
void test(int arr[3][5])
{//方式1
}

void test(int arr[][5])
{//方式2:行可以省略,列不能省略
}

void test(int (*arr)[5])
{//方式3:用一個(gè)數(shù)組指針來(lái)接收 
}
int main()
{int arr[3][5] = {0};
	test(arr);//二維數(shù)組傳參,它的首元素地址是
	//第一行所有元素
	return 0;
}
6.3指針傳參

在這里插入圖片描述
注:當(dāng)傳過(guò)去一個(gè)指針或者一個(gè)地址時(shí)用一個(gè)指針接收。

6.4二級(jí)指針傳參

在這里插入圖片描述

7.函數(shù)指針

概念:存放函數(shù)指針類(lèi)型元素的數(shù)組通俗的說(shuō)是指向函數(shù)的指針。
在這里插入圖片描述

8.函數(shù)指針數(shù)組

概念:存放函數(shù)指針類(lèi)型元素的數(shù)組

#includeint Add(int x, int y)
{return x + y;
}
int Sub(int x, int y)
{return x - y;
} 
int Mul(int x, int y)
{return x * y;
}
int Div(int x, int y)
{return x * y;
}
int main()
{//需要一個(gè)數(shù)組,來(lái)存放4個(gè)函數(shù)的地址-函數(shù)指針的數(shù)組
	int(*parr[4])(int, int) = {Add, Sub, Mul, Div };//函數(shù)指針的數(shù)組
	int i;
	for (i = 0; i< 4; i++)
	{printf("%d\n", parr[i](2, 3));//result:5,-1,6,0 
	}
	return 0;
}

應(yīng)用:計(jì)算器

#includeint Add(int x, int y)
{return x + y;
}

int Sub(int x, int y)
{return x - y;
}

int Mul(int x, int y)
{return x * y;
}

int Div(int x, int y)
{return x / y;
}

void menu()
{printf("************************\n");
	printf("*** 1.Add    2.Sub  ****\n");
	printf("*** 3.Mul    4.Div  ****\n");
	printf("********  0.exit   *****\n");
	printf("************************\n");
};

int main()
{int input;
	int x;
	int y;
	//定義一個(gè)函數(shù)指針數(shù)組來(lái)存放函數(shù)
	int(*pfArr[])(int, int) = {0, Add, Sub, Mul, Div };
	do {menu();
		printf("請(qǐng)選擇:>\n");
		scanf("%d", &input);
		if (input >= 1 && input<= 4)
		{	printf("請(qǐng)輸入兩個(gè)數(shù):>\n");
			scanf("%d %d", &x, &y);
			int ret = pfArr[input](x, y);
			printf("%d\n", ret);
		}
		else if (input == 0)
		{	printf("退出程序!\n");
		}
		else 
		{	printf("選擇無(wú)效,請(qǐng)重新選擇!\n");
		}
	} while (input);
	return 0;
}
*8.1指向函數(shù)指針數(shù)組的指針

概念::一個(gè)指針指向一個(gè)數(shù)組,數(shù)組的元素都是函數(shù)指針
在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站欄目:【C語(yǔ)言—指針】-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/deeoei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部