c<8>指針-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)成立于2013年,先為禮縣等服務(wù)建站,禮縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為禮縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

2,指針的賦值

2.1C語(yǔ)言允許指針賦值為0(初始化)

2.2指針賦值例

2.3輸出指針的值

3,用指針引用數(shù)組

3.1利用指針輸入數(shù)組

3.2優(yōu)先級(jí)問(wèn)題?

4.多維數(shù)組

5.字符串

5.1通過(guò)指針引用字符串

4.函數(shù)中對(duì)指針的應(yīng)用

4.1將指針變量作為函數(shù)參數(shù)

4.1.1指針的定義

4.1.2指針的引用

4.2將數(shù)組傳遞至函數(shù)中

5.函數(shù)指針

6.返回指針的函數(shù)


1,指針本身是一個(gè)地址,以int的形式保存

(32位用四個(gè)字節(jié)儲(chǔ)存,64位操作系統(tǒng)用八個(gè)字節(jié)儲(chǔ)存)

2,指針的賦值

一般來(lái)說(shuō)指針是無(wú)法直接賦值的

當(dāng)然可以用這種形式來(lái)強(qiáng)制賦值

(int*) p = 101;
2.1C語(yǔ)言允許指針賦值為0(初始化)
int* a = 0;

常用 :(防止未初始化指針破化內(nèi)存

if ( p != 0 )
    *p+1=xxxx;

宏定義

#define NULL 0

2.2指針賦值例
#includevoid main()
{
	char c = '9', * sp1, * sp2;
	sp1 = &c; sp2 = sp1;
	printf("%c", *sp2);
}
2.3輸出指針的值
pointer_1=&a;	//把變量a的地址賦給指針變量pointer_1
	pointer_2=&b;	//把變量b的地址賦給指針變量pointer_2 
	printf("a=%d,b=%d\n",a,b);	//輸出變量a和b的值
	printf("*pointer_1=%d,*pointer_2=%d\n",*pointer_1,*pointer_2);
	//輸出變量a和b的值
3,用指針引用數(shù)組

當(dāng)我們定義一個(gè)數(shù)組時(shí)

int a[100]={};

a是數(shù)組的首地址,且是以常量指針的形式保存(不能通過(guò)a++等來(lái)更改

所以當(dāng)我們針對(duì)數(shù)組進(jìn)行一些操作時(shí),通常將之復(fù)制到變量指針(P)上。

3.1利用指針輸入數(shù)組
#includeint main()
{	int i,a[10],*p=a;	//p的初值是a,p指向a[0]
	printf("please enter 10 integer numbers:");
	for(i=0;i<10;i++)
	scanf("%d",p++);



	p=a;				//重新使p指向a[0]
	for(i=0;i<10;i++,p++)
	printf("%d ",*p);
	printf("\n");
	return 0;
}

注意經(jīng)過(guò)一系列 的p++會(huì)使得p指向數(shù)組的末位。需要讀取數(shù)組需要重新使指針指向數(shù)組的首地址

3.2優(yōu)先級(jí)問(wèn)題?

++和*為同優(yōu)先級(jí)

從左到右依次執(zhí)行

4.多維數(shù)組

5.字符串 ?5.1通過(guò)指針引用字符串
#includeint main()
{	char string[]="I love China!";	//定義字符數(shù)組sting
	printf("%s\n",string);		//用%s格式聲明輸出string,可以輸出整個(gè)字符串
	printf("%c\n",string[7]);		//用%c格式輸出一個(gè)字符數(shù)組元素 
	return 0;
}

相當(dāng)于

#includeint main()
{	char *string="I love China!";	//定義字符指針變量string并初始化
	printf("%s\n",string);		//輸出字符串
	return 0;
4.函數(shù)中對(duì)指針的應(yīng)用 4.1將指針變量作為函數(shù)參數(shù) 4.1.1指針的定義

定義函數(shù)時(shí)需要同時(shí)定義指針變量

void swap(int *p1,int *p2)	
{
...
}

值得注意的是:如下的*temp不指向變量而直接賦值,由于temp指向位置為隨機(jī),可能會(huì)覆蓋原有數(shù)據(jù),計(jì)算機(jī)并不允許此類操作

//錯(cuò)誤示范
void swap(int *p1,int *p2)
{	int *temp;
	*temp=*p1;
 	*p1=*p2;
	*p2=*temp;
}
4.1.2指針的引用

不需要加*

swap(pointer_1,pointer_2);
4.2將數(shù)組傳遞至函數(shù)中
void inv(int x[],int n)		//形參x是數(shù)組名
{	int temp,i,j,m=(n-1)/2;
	for(i=0;i<=m;i++)
	{	j=n-1-i;
		temp=x[i]; x[i]=x[j]; x[j]=temp;	//把x[i]和x[j]交換
	}
	return;
}
void inv(int *x,int n)			//形參x是指針變量
{	int *p,temp,*i,*j,m=(n-1)/2;
	i=x; j=x+n-1; p=x+m;
	for(;i<=p;i++,j--)
	{	temp=*i; *i=*j; *j=temp;}	//*i與*j交換
	return;
}

they are?the same

5.函數(shù)指針

we can use pointers to invoke?defined functions

just like

int max(int,int);	//函數(shù)聲明
int (*p)(int,int);	//定義指向函數(shù)的指針變量p

p=max;	//使p指向max函數(shù)

c=(*p)(a,b);		//通過(guò)指針變量調(diào)用max函數(shù)
6.返回指針的函數(shù)
int *a(int x,int y);

x和y是函數(shù)的形參,調(diào)用函數(shù)可以返回一個(gè)Int*型指針

we must return an adress? ##

float *search(float (*pointer)[4],int n)
//形參pointer是指向一維數(shù)組的指針變量
{	float *pt;
	pt=*(pointer+n);	//pt的值是&score[k][0]
	return(pt);
}

你是否還在尋找穩(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)頁(yè)題目:c<8>指針-創(chuàng)新互聯(lián)
文章來(lái)源:http://muchs.cn/article48/hiohp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站導(dǎo)航、云服務(wù)器ChatGPT、軟件開(kāi)發(fā)做網(wǎng)站

廣告

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

搜索引擎優(yōu)化