欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中main函數(shù)怎樣調(diào)用類內(nèi)函數(shù)

 更新時(shí)間:2023年08月02日 09:42:20   作者:木木子v  
這篇文章主要介紹了C++中main函數(shù)怎樣調(diào)用類內(nèi)函數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++中main函數(shù)調(diào)用類內(nèi)函數(shù)

以力扣209題為例

#include <iostream>
#include<vector>
using namespace std;
class minimum_size_subarray_sum
{
public:
? ? static int minSubArrayLen(int target, vector<int> &nums)
? ? {
? ? ? ? int i = 0; ?
? ? ? ? int result = INT32_MAX; ??
? ? ? ? int sum = 0; ?
? ? ? ? int subLength = 0; ?
? ? ? ? for(int j = 0; j < nums.size(); j++) ? ? ?
? ? ? ? {
? ? ? ? ? ? sum = sum + nums[j];
? ? ? ? ? ? while(sum >= target)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? subLength = j - i + 1; ??
? ? ? ? ? ? ? ? result = result < subLength ? result : subLength;?
? ? ? ? ? ? ? ? sum = sum - nums[i]; ??
? ? ? ? ? ? ? ? i++;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return result == INT32_MAX ? 0 : result;
? ? }
};
int main()
{
? ? vector<int> nums;
? ? nums.push_back(2);
? ? nums.push_back(3);
? ? nums.push_back(1);
? ? nums.push_back(2);
? ? nums.push_back(3);
? ? nums.push_back(4);
? ? int target = 7;
? ? int result = minimum_size_subarray_sum::minSubArrayLen(target, nums);
? ? cout << result << endl;
? ? return 0;
}

將類內(nèi)函數(shù)設(shè)置為靜態(tài)static,就可以直接調(diào)用了,另外,在調(diào)用時(shí)要加上類名。

另外,補(bǔ)充:在C++中,“::”表示作用域,::前面是類名,后面是該類的成員名稱,C++為避免不同的類有名稱相同的成員而采用作用域的方式進(jìn)行區(qū)分。

C++ main函數(shù)的調(diào)用與被調(diào)用

main函數(shù)能調(diào)用自身嗎?

其他函數(shù)能調(diào)用main函數(shù)么?

下面先看一段有意思的程序,一個(gè)簡潔有趣的打印菱形的程序。

int line = 1;  
int main()  
{  
    printf("%*s\n",7-(line>4?line-4:4-line),  
        "*******"+2*(line>4?line-4:4-line));  
    if(++line !=8)  
        main();  
    return 0;  
}  

效果圖如下:

首先說一下”%*s”的用法,即*是用一個(gè)int參數(shù)來代替,比如:

printf(“%*s\n”, 5, “def”);就相當(dāng)于printf(“%5s\n”, “def”);指定了字符串輸出的寬度。這個(gè)用法平時(shí)見得不多,可以了解下。

另外:有人對(duì)這一行“*******”+2*(line>4? line-4:4-line)感到疑惑,其實(shí)認(rèn)真看一下,就是一個(gè)字符串指針加上一個(gè)int整數(shù),也就是指針的平移了。比如line=1第一行時(shí),2*(line>4? line-4:4-line)即為6,也就是7個(gè)星號(hào)的字符串指針平移6個(gè),所以輸出一個(gè)星號(hào)了。最后這個(gè)程序用到了main函數(shù)的遞歸調(diào)用,注意一定要寫上退出條件,否則就無限循環(huán)了。

這里分享下*在scanf中的作用是跳過...

例如:

scanf("%*d %*d %d",&n);
printf("%d",n);

這樣當(dāng)輸入 1 2 3的時(shí)候,只會(huì)存儲(chǔ)n,正常打印3

再啰嗦一下*在printf("%*d",width,n);這樣因?yàn)槭?d 的順序,所以width實(shí)際表達(dá)的是 n的輸出寬度,n才是要輸出的內(nèi)容。

例如:

int n=3;
scanf("%d",width);
printf("%*d",width,n);

下面看一下其他函數(shù)調(diào)用main的例子,打?。崭瘢?/p>

int line = 1;  
int func();  
int main()  
{  
    printf("%d ",line);  
    line++;  
    if(line<=9)  
        main();  
    func();  
    return 0;  
};  
int func()  
{  
    if(line<=13)  
    {  
        line++;  
        main();  
    }  
    return 0;  
}  

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

事實(shí)證明main函數(shù)只是一個(gè)程序的入口,也相當(dāng)于一個(gè)普通的函數(shù),也能被自身調(diào)用,也能被其他函數(shù)調(diào)用。

這和一般的函數(shù)之間互相調(diào)用的概念是一樣的。不過需要注意的是,main函數(shù)不管是自身的調(diào)用還是被其他函數(shù)調(diào)用,都要設(shè)置函數(shù)終止的條件,這個(gè)遞歸函數(shù)有點(diǎn)相似,不然就會(huì)陷入死循環(huán)。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C/C++通過HTTP實(shí)現(xiàn)文件上傳與下載的示例詳解

    C/C++通過HTTP實(shí)現(xiàn)文件上傳與下載的示例詳解

    WinInet是 Microsoft Windows 操作系統(tǒng)中的一個(gè) API 集,用于提供對(duì) Internet 相關(guān)功能的支持,它包括了一系列的函數(shù),使得 Windows 應(yīng)用程序能夠進(jìn)行網(wǎng)絡(luò)通信、處理 HTTP 請(qǐng)求、FTP 操作等,本文給大家介紹了C/C++通過HTTP實(shí)現(xiàn)文件上傳與下載,需要的朋友可以參考下
    2023-12-12
  • C++堆棧類模板實(shí)現(xiàn)代碼

    C++堆棧類模板實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C++堆棧類模板的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • c語言 malloc函數(shù)詳解

    c語言 malloc函數(shù)詳解

    這篇文章主要介紹了c語言 malloc函數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解C++17中nodiscard標(biāo)記符的使用

    詳解C++17中nodiscard標(biāo)記符的使用

    在C++?17中引入了一個(gè)標(biāo)記符nodiscard,用于聲明一個(gè)?“非棄值(no-discard)表達(dá)式”。這篇文章就來和大家來聊一聊nodiscard標(biāo)記符的使用吧
    2023-02-02
  • C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表

    C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表

    在數(shù)據(jù)結(jié)構(gòu)中,線性表是入門級(jí)數(shù)據(jù)結(jié)構(gòu),線性表又分為順序表和鏈表,這篇文章主要給大家介紹了關(guān)于C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • C++實(shí)現(xiàn)數(shù)字轉(zhuǎn)換為十六進(jìn)制字符串的方法

    C++實(shí)現(xiàn)數(shù)字轉(zhuǎn)換為十六進(jìn)制字符串的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)數(shù)字轉(zhuǎn)換為十六進(jìn)制字符串的方法,涉及C++操作數(shù)字與字符串轉(zhuǎn)換的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C++讀取INI配置文件類實(shí)例詳解

    C++讀取INI配置文件類實(shí)例詳解

    這篇文章主要介紹了C++讀取INI配置文件類的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-07-07
  • C++簡單集合類的實(shí)現(xiàn)方法

    C++簡單集合類的實(shí)現(xiàn)方法

    如何使用C++實(shí)現(xiàn)一個(gè)簡單的集合類,這篇文章主要介紹了C++簡單集合類的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • C語言指針必備基礎(chǔ)全面覆蓋

    C語言指針必備基礎(chǔ)全面覆蓋

    數(shù)據(jù)對(duì)象是指存儲(chǔ)在內(nèi)存中的一個(gè)指定數(shù)據(jù)類型的數(shù)值或字符串,它們都有一個(gè)自己的地址,指針是保存這個(gè)地址的變量,本篇文章帶你掌握C語言指針的用法
    2021-10-10
  • C語言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作

    C語言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)循環(huán)隊(duì)列基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論