国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言指針操作(八)返回指針值的函數(shù)詳解

這篇具有很好參考價(jià)值的文章主要介紹了C語言指針操作(八)返回指針值的函數(shù)詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一個(gè)函數(shù)可以返回一個(gè)整型值、字符值、實(shí)型值等,也可以返回指針型的數(shù)據(jù),即地址。其概念與以前類似,只是返回的值的類型是指針類型而已。

目錄

一、引入

二、返回指針值的函數(shù)的定義

2.1舉例說明1

2.2舉例說明2


一、引入

一個(gè)函數(shù)可以返回一個(gè)整型值、字符值、實(shí)型值等,也可以返回指針型的數(shù)據(jù),即地址。其概念與以前類似,只是返回的值的類型是指針類型而已。

例如 “ int *a(int x,int y); ”,a 是函數(shù)名,調(diào)用它以后能得到一個(gè) int* 型(指向整型數(shù)據(jù))的指針,即整型數(shù)據(jù)的地址。x 和 y 是函數(shù) a 的形參,為整型。

請(qǐng)注意在 “ *a ”兩側(cè)沒有括號(hào),在 a 的兩側(cè)分別為 * 運(yùn)算符和 () 運(yùn)算符。而 () 優(yōu)先級(jí)高于 * ,因此 a 先與 () 結(jié)合,顯然這是函數(shù)形式。這個(gè)函數(shù)前面有一個(gè) *,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。最前面的 int 表示返回的指針指向整型變量。

二、返回指針值的函數(shù)的定義

定義返回指針值的函數(shù)的原型的一般形式為:

類型名 *函數(shù)名(參數(shù)表列);

對(duì)初學(xué)C語言的人來說,這種定義形式可能不大習(xí)慣,容易弄錯(cuò),使用時(shí)要十分小心。通過下面的例子可以初步了解怎樣使用返回指針的函數(shù)。

2.1舉例說明1

舉例:有 a 個(gè)學(xué)生,每個(gè)學(xué)生有 b 門課程的成績(jī)。要求在用戶輸入學(xué)生序號(hào)以后,能輸出該學(xué)生的全部成績(jī),用指針函數(shù)來實(shí)現(xiàn)。

#include <stdio.h>
int main()
{
	float score[][4] = { {60, 70, 80, 90}, { 56,89 ,67,88 }, { 34,78,90,66 } };
	float* search(float(*pointer)[4], int n);		//函數(shù)聲明
	float* p;
	int k;
	printf("輸入要找的學(xué)生的序號(hào):");
	scanf_s("%d", &k);
	printf("The scores of No.%d are:\n", k);
	p = search(score, k);					//調(diào)用search函數(shù),返回score[k][0]的地址
	for (int i = 0; i < 4; i++)
		printf("%5.2f\t", *(p + i));		//輸出score[k][0]-score[k][3]的值
	printf("\n");
	return 0;
}

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

運(yùn)行結(jié)果:

函數(shù)返回指針,C語言,c++,c語言,算法,數(shù)據(jù)結(jié)構(gòu),指針

程序分析:

函數(shù)返回指針,C語言,c++,c語言,算法,數(shù)據(jù)結(jié)構(gòu),指針

函數(shù) search 定義為指針型函數(shù),它的形參 pointer 是指向包含 4 個(gè)元素的一維數(shù)組的指針變量。 pointer+1 指向 score 數(shù)組序號(hào)為 1 的行(學(xué)生序號(hào)是從0號(hào)算起的)。*(pointer+1)指向 1 行 0 列元素(對(duì) pointer+1 加了 “ * ” 號(hào)后,指針從行控制轉(zhuǎn)化為列控制了)。search 函數(shù)中的 pt 是指針變量,它指向 float 型變量(而不是指向一維數(shù)組)。main 函數(shù)調(diào)用 search 函數(shù),將 score 數(shù)組首行地址傳給形參 pointer (注意 score 也是指向行的指針,而不是指向列元素的指針)。k 是要查找的學(xué)生序號(hào)。調(diào)用 search 函數(shù)后,main 函數(shù)得到一個(gè)地址 &score[k][0] (指向第 k 個(gè)學(xué)生第 0 門課程),賦給 p。然后將此學(xué)生的 4 門課程的成績(jī)輸出。注意 p 是指向 float 型數(shù)據(jù)的指針變量,*(p+i) 表示該學(xué)生第 i 門課程的成績(jī)。

2.2舉例說明2

舉例:對(duì)2.1中的程序,找出其中有不及格的課程的學(xué)生及其學(xué)生號(hào)。

#include <stdio.h>
int main()
{
	float score[][4] = { {60,70,80,90},{56,89,67,88},{34,78,90,66} };
	float* search(float(*pointer)[4]);		//函數(shù)聲明
	float* p;
	for (int i = 0; i < 3; i++)				//循環(huán)3次
	{
		p = search(score + i);	//調(diào)用search函數(shù),如有不及格返回score[i][0]的地址,否則返回NULL
		if (p == *(score + i))	//如果返回的是score[i][0]的地址,表示p的值不是NULL
		{
			printf("No.%d score:", i);
			for (int j = 0; j < 4; j++)
			{
				printf("%5.2f ", *(p + j));	// 輸出score[i][0]score[i][3]的值
			}
			printf("\n");
		}
	}
	return 0;
}

float* search(float(*pointer)[4])	//定義函數(shù),形參pointer是指向一維數(shù)組的指針變量
{
	float* pt = NULL;				//先使pt的值為NULL
	for (int i = 0; i < 4; i++)
	{
		if (*(*pointer + i) < 60)
			pt = *pointer;			//如果有不及格課程,使pt指向scoreL[i][0]
	}
	return pt;
}

運(yùn)行結(jié)果:

函數(shù)返回指針,C語言,c++,c語言,算法,數(shù)據(jù)結(jié)構(gòu),指針

程序分析:

函數(shù) search 的作用是檢查一個(gè)學(xué)生有無不及格的課程。在 search 函數(shù)中的 pointer 是指向一維數(shù)組(有 4 個(gè)元素)的指針變量。pt 為指向 float 型變量的指針變量。從實(shí)參傳給形參 pointer 的是 score+i,它是 score 第 i 行的首地址,在 search 函數(shù)中,先使 pt=NULL (即 pt=0 )。用 pt 作為區(qū)分有無不及格課程的標(biāo)志。若經(jīng)檢查 4 門課中有不及格的,就使 pt 指向本行 0 列元素,即 pt=&score[i][0];若無不及格則保持 pt 的值為NULL。將 pt 返回 main 函數(shù)。在 main 函數(shù)中,把調(diào)用 search 得到的函數(shù)值(指針變量 pt 的值)賦給 p。用 if 語句判斷 p 是否等于 *(score+i),若相等,表示所查的序號(hào)為 i 的學(xué)生有不及格課程( p的值為 *( score+i ),即 p 指向 i 行 0 列元素),就輸出該學(xué)生(有不及格課程的學(xué)生) 4 門課成績(jī)。若無不及格,p的值是NULL,不輸出。

C語言指針操作系列文章:

C語言指針操作(一)地址,指針,指針變量是什么

C語言指針操作(二)指針變量作為函數(shù)參數(shù)

C語言指針操作(三)通過指針引用數(shù)組

C語言指針操作(四)用數(shù)組名作函數(shù)參數(shù)

C語言指針操作(五)通過指針引用多維數(shù)組

C語言指針操作(六)通過指針引用字符串

C語言指針操作(七)指向函數(shù)的指針

C語言指針操作(八)返回指針值的函數(shù)

C語言指針操作(九)指針數(shù)組和多重指針

C語言指針操作(十)動(dòng)態(tài)內(nèi)存分配與指向它的指針變量

C語言指針操作(十一)有關(guān)指針的小結(jié)文章來源地址http://www.zghlxwxcb.cn/news/detail-721886.html

到了這里,關(guān)于C語言指針操作(八)返回指針值的函數(shù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言指針操作(二)指針變量作為函數(shù)參數(shù)

    C語言指針操作(二)指針變量作為函數(shù)參數(shù)

    指針變量作為函數(shù)參數(shù)詳解,形參和實(shí)參之間的值傳遞如何傳遞?如何改變指針變量所指向的變量? 函數(shù)的參數(shù)不僅可以是整型,浮點(diǎn)型,字符型等數(shù)據(jù),還可以是指針類型;它的作用是將一個(gè)變量的地址傳送到另一個(gè)函數(shù)中。 關(guān)于地址,指針,指針變量可以參考一下這篇

    2024年02月04日
    瀏覽(26)
  • C語言--指針詳解(下)--字符指針、數(shù)組指針、指針數(shù)組、函數(shù)指針、函數(shù)指針數(shù)組(轉(zhuǎn)移表)

    C語言--指針詳解(下)--字符指針、數(shù)組指針、指針數(shù)組、函數(shù)指針、函數(shù)指針數(shù)組(轉(zhuǎn)移表)

    在C語言中有一種指針類型為字符指針 char*,常用其來表示字符,使用如下: 除了上述用法之外,還可以有以下的用法: 在上面的代碼中,字符 \\\" hello word \\\"是常量字符串,將\\\"hello word\\\"放入 pstr 指針的實(shí)質(zhì)是將第一個(gè)字符 “ h \\\" 的地址傳遞給了 pstr ,通過首字符 ” h \\\" 就可以訪問

    2024年02月03日
    瀏覽(28)
  • C語言 函數(shù)指針詳解

    C語言 函數(shù)指針詳解

    1.1、概念 函數(shù)指針 :首先 它是一個(gè)指針,一個(gè)指向函數(shù)的指針,在內(nèi)存空間中存放的是函數(shù)的地址 ; 示例: 函數(shù)名是等于函數(shù)地址 的! 1.2、函數(shù)指針的使用方法 函數(shù)指針的定義 : 函數(shù)的返回值類型(*指針名)(函數(shù)的參數(shù)列表類型 ) 1.3、怎么使用函數(shù)指針去調(diào)用函

    2024年02月14日
    瀏覽(18)
  • C++中幾種處理函數(shù)返回值的方式

    函數(shù)可以返回一個(gè)具體的值,例如整數(shù)、浮點(diǎn)數(shù)、結(jié)構(gòu)體、類對(duì)象等。返回值被復(fù)制到函數(shù)調(diào)用點(diǎn),在調(diào)用點(diǎn)可以直接使用或賦給其他變量。 函數(shù)可以返回一個(gè)引用,引用是對(duì)某個(gè)變量的別名。通過引用返回可以避免復(fù)制大型對(duì)象的開銷,并允許修改原始對(duì)象。需要注意的是

    2024年02月10日
    瀏覽(23)
  • 如何實(shí)現(xiàn)讓一個(gè)函數(shù)能返回多個(gè)值的效果

    在C語言中,一個(gè)函數(shù)通常只能返回一個(gè)值。但是可以通過指針參數(shù)或結(jié)構(gòu)體來模擬返回多個(gè)值的效果。 使用指針參數(shù) :你可以將需要返回的值作為函數(shù)的參數(shù),通過指針的形式傳入,讓函數(shù)將結(jié)果寫入指針?biāo)赶虻膬?nèi)存位置。 使用結(jié)構(gòu)體 :你可以定義一個(gè)結(jié)構(gòu)體,其中包

    2024年02月08日
    瀏覽(21)
  • 【C語言進(jìn)階】⑥函數(shù)指針詳解

    【C語言進(jìn)階】⑥函數(shù)指針詳解

    1.概念 函數(shù)指針 :首先它是一個(gè)指針,一個(gè)指向函數(shù)的指針,在內(nèi)存空間中存放的是函數(shù)的地址; 請(qǐng)看示例: 解析:parr是一個(gè)指向數(shù)組的指針,存放的是數(shù)組的地址; 所以: 數(shù)組指針 —存放數(shù)組地址的指針; 數(shù)組名 —得到的就是數(shù)組的地址; 那么我們可以不可以這么認(rèn)

    2024年02月02日
    瀏覽(31)
  • getchar函數(shù)詳解看這一篇就夠了-C語言(函數(shù)功能、使用、返回值)

    getchar函數(shù)詳解看這一篇就夠了-C語言(函數(shù)功能、使用、返回值)

    首先要明確getchar的功能是:從計(jì)算機(jī)終端(一般是鍵盤)輸入一個(gè)字符,其值就是輸入得到的字符。 目錄 getchar函數(shù)簡(jiǎn)介 getchar函數(shù)執(zhí)行過程詳解(配圖) ?getchar用法示例 解釋一下:while ((ch=getchar()) != \\\'EOF\\\') 函數(shù)原型:int getchar(void);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回

    2024年02月07日
    瀏覽(17)
  • C++ 返回函數(shù)指針的函數(shù)

    C++ 返回函數(shù)指針的函數(shù)

    目錄 0 前言 1 Function Pointer in C/C++ type 1.1 ordinary function Pointer 1.2 non-static member function of class 1.3 Lambda To Function Pointer 1.4 總結(jié)什么是指針 2 Returning a function pointer from a function in C/C++ 3. C - Variable Arguments (Variable length arguments) 4. Variadic Template 5 Variadic Template with member function pointer 6 最終

    2024年02月05日
    瀏覽(18)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】 C語言實(shí)現(xiàn)單鏈表隊(duì)列詳解

    【算法與數(shù)據(jù)結(jié)構(gòu)】 C語言實(shí)現(xiàn)單鏈表隊(duì)列詳解

    前面我們學(xué)習(xí)了隊(duì)列的順序表的實(shí)現(xiàn),本節(jié)將用單鏈表實(shí)現(xiàn)隊(duì)列。 隊(duì)列也可以數(shù)組和鏈表的結(jié)構(gòu)實(shí)現(xiàn), 使用鏈表的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些,因?yàn)槿绻褂脭?shù)組的結(jié)構(gòu),出隊(duì)列在數(shù)組頭上出數(shù)據(jù),效率會(huì)比較低 。下面我們先復(fù)習(xí)一下隊(duì)列的基本概念: 隊(duì)列:只允許在一端進(jìn)行插入

    2024年04月11日
    瀏覽(94)
  • 數(shù)據(jù)結(jié)構(gòu):定長(zhǎng)順序串(SString)基本操作的算法描述(C語言)

    作者在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí),發(fā)現(xiàn)鮮有完全按照 C 語言描述的算法操作,這讓習(xí)慣于寫 .c 而不是 .cpp 的初學(xué)者很是頭疼。本文將基于 C 語言描述算法操作,如有錯(cuò)漏還望大佬們指正。 本文將按照嚴(yán)惠敏所著《數(shù)據(jù)結(jié)構(gòu)(C語言版)》所做的函數(shù)原型聲明進(jìn)行算法描述,由于C語言不支

    2024年02月07日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包