第1講:C語言常見概念

目錄

一、什么是C語言?

二、C語言的歷史與成就

三、編譯器選擇(VS2022)

1、編譯與鏈接

2、編譯器對比

3、VS2022的優缺點

四、VS項目與源文件、頭文件介紹

五、第一個C語言程序

六、main函數

七、printf和庫函數

八、關鍵字介紹

九、字符與ASCII編碼

十、字符串與空字符

十一、轉義字符

十二、語句和語句分類

1、空語句

2、表達式語句

3、函數調用語句

4、復合語句

5、控制語句

十三、注釋是什么?為什么要寫注釋?

1、注釋的兩種形式

/* */形式

雙斜杠//

2、注釋替換規則

十四、VS2022創建項目步驟

第一步:點擊創建新項目

第二步:選擇空項目,然后下一步

第三步:填寫項目名稱和路徑

第四步:項目創建完成

第五步: 新建源文件過程

第六步:顯示所有模版并成功新建.c源文件


一、什么是C語言?

  • 人與人交流使用的是自然語言,比如漢語、英語、日語等。
  • 那么人與計算機如何溝通呢?答案是通過計算機語言。
  • 目前已知的計算機語言已有上千種。人們通過編寫計算機程序來給計算機下達指令,使其完成特定工作。
  • C語言就是眾多計算機語言中的一種,其他常見的還有C++、Java、Go、Python等。

二、C語言的歷史與成就

C語言最初是為開發Unix操作系統而發明的工具。

摘要:TIOBE 指數 - TIOBE

2025 年 6 月的 TIOBE 指數:

????????TIOBE 編程社區指數是衡量編程受歡迎程度的指標 語言。該指數每月更新一次。評級基于 全球技術嫻熟的工程師、課程和第三方供應商。熱門網站 Google、Amazon、Wikipedia、Bing 和其他 20 多個網站用于計算評級。 需要注意的是,TIOBE 指數并不是關于最好的編程語言或語言 其中編寫了大部分代碼行

????????該索引可用于檢查您的編程技能是否仍然是最新的,或者創建 關于在開始構建新的 軟件系統。TIOBE 指數的定義可以在這里找到。

?

?


三、編譯器選擇(VS2022)

1、編譯與鏈接

  • C語言作為一門編譯型計算機語言,其源代碼以文本文件形式存在。
  • 這些文本文件本身不可直接執行,需要通過編譯器進行翻譯并由鏈接器完成鏈接,最終生成二進制可執行文件才能運行。
  • C語言代碼通常存儲在以.c為后綴的文件中。要將其轉換為可執行程序,需要經過編譯和鏈接兩個關鍵步驟。

一個工程通常由多個源文件組成。下圖展示了源程序經過編譯器和鏈接器處理的過程:

注意:

  1. 編譯器將每個源文件(.c)單獨編譯,生成對應的目標文件(.obj后綴文件)

  2. 鏈接器將多個目標文件與庫文件組合,最終生成可執行程序(.exe文件)

這就是Windows系統下C語言程序生成.exe可執行文件的完整流程。

2、編譯器對比

  • C語言是一門編譯型計算機語言,需要通過編譯器將源代碼轉換為機器可執行的指令。
  • 常見的C語言編譯器包括msvc、clang和gcc等。
  • 此外,還有一些集成開發環境(IDE)如VS2022、XCode、CodeBlocks、DevC++和Clion等,它們內置了這些編譯器。
  • 集成開發環境(IDE)是為程序開發提供完整環境的應用程序,通常包含代碼編輯器、編譯器、調試器和圖形用戶界面等工具。
  • 這些IDE整合了代碼編寫、分析、編譯和調試等功能,提供了一整套開發軟件服務。

  • VS2022:集成MSVC編譯器(安裝包較大但安裝簡便,無需額外配置,使用便捷)(Visual Studio 2022 IDE - 適用于軟件開發人員的編程工具)

  • XCode:蘋果電腦專用開發工具,內置clang編譯器(Xcode - Apple Developer)

  • CodeBlocks:集成gcc編譯器(相對小眾,需配置環境,不推薦使用)(Code::Blocks - Code::Blocks)

  • DevC++:輕量級gcc集成工具(界面過于簡單,不利于代碼風格養成,常見于競賽場景)(Dev-C++ download | SourceForge.net)

  • Clion:默認采用CMake構建系統,可配置編譯器(付費軟件,暫不推薦)(CLion:JetBrains 的 C 和 C++ 跨平臺 IDE)

綜合推薦:建議安裝VS2022社區版(免費、操作簡便、行業主流工具)

📎 VS2022安裝教程:VS2022安裝使用教程,VS2022使用教程Visual Studio 2022詳細安裝使用調試教程C語言編譯器C++編譯器VS2022使用教程C語言軟件安裝_嗶哩嗶哩_bilibili

3、VS2022的優缺點

優點:

  • 作為主流集成開發環境,VS2022在企業中應用廣泛
  • 集編輯器、編譯器和調試器于一體,功能全面
  • 安裝即用,基本無需額外配置,易于上手
  • 默認中文界面,對初學者十分友好

缺點:

  • 功能豐富導致安裝包較大,占用較多存儲空間

四、VS項目與源文件、頭文件介紹

????????在VS中進行開發時,需要先創建項目(直接新建項目即可)。項目創建后,可添加源文件和頭文件,C語言把:

  • 源文件:以.c為后綴
  • 頭文件:以.h為后綴


五、第一個C語言程序

#include <stdio.h>int main() 
{printf("hello C\n");return 0;
}

在VS2022中創建項目、編寫C代碼并運行:

在VS2022中運行代碼的快捷鍵是:Ctrl+F5。


六、main函數

  • 任何C語言程序都從main函數開始執行,無論代碼量有多少。
  • main函數是程序的唯一入口,也被稱為主函數。
  • 函數前的int表明main函數執行完畢后會返回一個整型值,因此在函數末尾使用"return 0;"與之呼應。

關于main函數的關鍵點:

  • 程序有且僅有一個main函數
  • 即使項目包含多個.c文件,也只能有一個main函數(程序入口唯一)

初學者常見錯誤:

  • 將main誤寫為mian
  • 遺漏main后面的括號()
  • 使用中文符號(如括號、分號)
  • 語句結尾未加分號

七、printf和庫函數

在上文示例代碼中,我們使用了printf函數:

printf("hello C\n");

????????printf是一個標準庫函數,用于在標準輸出設備(通常是屏幕)上顯示信息。使用時只需將需要輸出的字符串用雙引號括起來作為參數傳入即可。

printf不僅能輸出字符串,還可以打印多種數據類型:

int n = 100;
printf("%d\n", n);    // 打印整型
printf("%c\n", 'q');  // 打印字符
printf("%lf\n", 3.14);// 打印雙精度浮點型

其中%d、%c等是格式占位符,將被后續的實際值替代(后續會詳細講解)。

使用庫函數時需要包含相應頭文件,例如printf需要:

#include <stdio.h>

關于庫函數:

????????C語言標準定義了一組常用函數的規范,由編譯器廠商實現并提供給開發者使用,這些函數統稱為標準庫函數,這些函數組成了?個函數庫,被稱為標準庫,某些編譯器廠商可能還會提供額外的擴展函數(不一定被其他編譯器支持)。

同類型的庫函數通常聲明在同一個頭文件中,因此使用時需要包含對應的頭文件。

更多庫函數信息可參考:cplusplus.com/reference/clibrary/


八、關鍵字介紹

????????C語言中有一組具有特殊含義的保留符號,如int、if、return等,這些符號被稱為關鍵字或保留字。關鍵字的特性包括:

  • 具有特定功能,專為C語言設計
  • 不能用作程序員自定義的標識符
  • 無法由用戶自行創建

C語言包含32個基本關鍵字:

補充說明:

  1. C99標準新增了inline、restrict、_Bool、_Complex、_Imaginary等關鍵字
  2. 實際開發中最常用的仍是上述32個基礎關鍵字
  3. 完整關鍵字說明可參考:C keywords - cppreference.com

這些常用關鍵字將在后續中逐步講解。


九、字符與ASCII編碼

????????在鍵盤上輸入的各種符號(如a、q、@、#等)都被稱為字符。在C語言中,字符需要用單引號括起來表示,例如'a'、'b'、'@'等。

????????由于計算機中的所有數據都以二進制形式存儲,這些字符在內存中也需要對應的二進制表示。如果每個人都自行定義字符的二進制編碼,就會造成通信混亂。為此,美國國家標準學會(ANSI)制定了統一的ASCII編碼標準。C語言中的字符編碼正是遵循了這一標準。

以下是ASCII編碼表:?ASCII Chart - cppreference.com

雖然不需要記憶整個ASCII碼表,但掌握幾組關鍵數據會很有幫助:

  • 大寫字母A-Z對應65-90
  • 小寫字母a-z對應97-122
  • 大小寫字母的ASCII差值恒為32(如'A'與'a')
  • 數字0-9對應48-57
  • 換行符\n的ASCII值為10
  • 0-31為不可打印的控制字符,無法打印在屏幕上觀察

單個字符的打印可以使用%c來指定格式:

#include <stdio.h>
int main() 
{printf("%c\n", 'Q');  // 直接輸出字符printf("%c\n", 81);   // 通過ASCII碼輸出return 0;
}

可打印字符展示(32-126):

#include <stdio.h>
int main() 
{for(int i=32; i<127; i++) {printf("%c ", i);if(i%16 == 15) printf("\n");}return 0;
}


十、字符串與空字符

????????在C語言中,字符串是通過雙引號括起來的一串字符來表示的。例如:"abcdef"就是一個字符串。字符串的打印可以使用%s格式符,也可以直接輸出:

#include <stdio.h>
int main() 
{printf("%s\n", "hello C");printf("hello c");return 0;
}

????????C語言字符串有一個重要特性:每個字符串末尾會自動包含一個隱藏的'\0'字符,這個空字符標志著字符串的結束。

觀察VS2022的監視窗口:

????????在字符串"abcdef"中,我們直觀看到的是6個字符:a、b、c、d、e、f。但實際上字符串末尾還包含一個隱藏的轉義字符\0,它是字符串的結束標志。正是因為這個特性,當使用庫函數如printf()打印字符串或strlen()計算字符串長度時,遇到\0就會自動停止操作。

在C語言中,字符串也可以存儲在字符數組中。下面通過代碼演示\0的作用:

#include <stdio.h>
int main() 
{char arr1[] = {'a', 'b', 'c'};  // arr1數組僅存儲3個字符char arr2[] = "abc";            // arr2數組存儲字符串printf("%s\n", arr1);printf("%s\n", arr2);return 0;
}

調試時可以發現arr1和arr2的內容差異:

運行結果:

????????當打印 arr1 字符數組時,輸出完 a、b、c 后會出現隨機值,這是因為 arr1 末尾缺少 \0 作為結束標志,導致無法正常終止,直到找到\0為止。而 arr2 數組使用字符串常量初始化時自動包含 \0 標志,因此打印能正常停止。

如果在 arr1 數組中手動添加 \0 字符會怎樣呢?

#include <stdio.h>
int main()
{char arr1[] = {'a', 'b', 'c', '\0'};char arr2[] = "abc";printf("%s\n", arr1);printf("%s\n", arr2);printf("%s\n", "abc\0def");return 0;
}

從三次打印結果可以看出,輸出都在遇到 '\0' 時終止。這個例子清楚地展示了 '\0' 的重要作用。


十一、轉義字符

????????在前面的代碼中,你可能遇到過 \n\0 這樣的特殊符號。這些都屬于轉義字符,顧名思義就是能夠改變字符原本含義的特殊字符。舉個簡單例子,字符 'n' 在字符串中會正常顯示,但當我們使用 \n 時,它的含義就發生了變化:

#include <stdio.h>
int main() 
{printf("abcndef");return 0;
}

程序運行后將輸出以下結果:

如果我們在代碼中進行調整,在變量 n 前面添加反斜杠 \,修改后的代碼如下:

#include <stdio.h>
int main() 
{printf("abc\ndef");return 0;
}

輸出的結果:?

????????修改前后的代碼輸出結果截然不同,這是為什么呢?關鍵在于轉義字符的作用。\n 是一個表示換行的轉義字符,可以理解為反斜杠 \ 改變了字母 n 的原有含義——原本普通字符 n 被轉義為具有換行功能。

在 C 語言中,類似的轉義字符還有以下幾種:

轉義字符說明示例/備注
\n換行符光標移動到下一行行首
\?連續問號轉義防止被解析為三字母詞(現代編譯器基本不需要)
\'單引號字符用于字符常量中:char c = '\'';
\"雙引號字符用于字符串內部:"He said, \"Hello\""
\\反斜杠字符表示路徑時:"C:\\Windows\\System"
\a警報符觸發系統提示音或閃爍(ASCII 7)
\b退格符光標回退一格(ASCII 8),不刪除內容
\f換頁符原始設計用于打印機換頁,現代終端行為類似\v
\r回車符光標返回行首(常用于Windows換行\r\n
\t水平制表符跳到下一個制表位(通常4/8字符間隔)
\v垂直制表符光標移動到下一行同列位置

有兩種轉義字符可以理解為字符的八進制或十六進制表示形式:

  • \ddd:由1-3位八進制數字組成。例如:\130表示字符X
  • \xdd:由2位十六進制數字組成。例如:\x30表示字符0

其中,\0表示null字符,代表空內容。它屬于\ddd這類轉義字符,常用于字符串結束標志,其ASCII碼值為0。

代碼示例:

#include <stdio.h>int main() 
{printf("%c\n", '\'');       // 輸出單引號printf("%s\n", "\"");       // 輸出雙引號printf("c:\\test\\code\\test.c\n");  // 輸出文件路徑printf("\a");               // 響鈴提示printf("%c\n", '\130');     //130是8進制,轉換成10進制是88,以88作為ASCII碼值的字符是'X' printf("%c\n", '\x30');     //x30中的30是16進制,轉換成10進制是48,以48作為ASCII碼值的字符是'0'return 0;
}

  1. 這些ASCII碼值可以通過編寫代碼自行驗證
  2. 我們需要理解轉義字符的概念,并能在字符串中正確識別
  3. 轉義字符參考文檔:Escape sequences - cppreference.com

十二、語句和語句分類

C語言代碼由一系列語句構成,可分為以下五類:

  • 空語句
  • 表達式語句
  • 函數調用語句
  • 復合語句
  • 控制語句

1、空語句

空語句是最簡單的語句形式,僅由一個分號構成。

#include <stdio.h>
int main() 
{; //空語句return 0;
}

?空語句通常用于需要語句但不執行任何操作的場景。

2、表達式語句

表達式語句是在表達式末尾加上分號形成的語句。

#include <stdio.h>
int main() 
{int a = 20;int b = 0;b = a + 5; //表達式語句return 0;
}

3、函數調用語句

函數調用加上分號即構成函數調用語句。

#include <stdio.h>
int Add(int x, int y) 
{return x+y;
}int main() 
{printf("hehe\n"); //函數調用語句int ret = Add(2, 3); //函數調用語句return 0;
}

4、復合語句

復合語句是由一對大括號{}包裹的代碼塊。

#include <stdio.h>
void print(int arr[], int sz) 
{ //函數體構成復合語句int i = 0;for(i=0; i<sz; i++) {printf("%d ", arr[i]);}
}int main() 
{int i = 0;int arr[10] = {0};for(i=0; i<10; i++) { //循環體構成復合語句arr[i] = 10-i;printf("%d\n", arr[i]);}return 0;
}

5、控制語句

????????控制語句用于控制程序執行流程,實現程序的不同結構(順序結構、選擇結構、循環結構)。C語言共有9種控制語句,可分為三類:

  1. 條件判斷語句(分支語句):if語句、switch語句;
  2. 循環執行語句:do-while語句、while語句、for語句;
  3. 轉向語句:break語句、goto語句、continue語句、return語句。

后續章節將詳細介紹這些控制語句。


十三、注釋是什么?為什么要寫注釋?

????????注釋是對代碼的解釋說明,編譯器會忽略這部分內容,因此注釋不會影響代碼的實際運行。其主要目的是幫助程序員(包括自己和其他開發者)更好地理解代碼。

????????優秀的注釋應當簡明扼要,既不能過度注釋(避免寫無意義的說明),也不能完全不寫(否則會給后續代碼維護帶來困難)。適當地添加必要注釋不僅能體現開發者的專業素養,在求職面試時,規范的注釋習慣也會給面試官留下良好印象。

VS2022注釋與去注釋快捷鍵如下:

1、注釋的兩種形式

C語言支持兩種注釋方式:

/* */形式

這種注釋可以跨越多行,格式如下:

/* 單行注釋 */
/* 
多行
注釋 
*/

也可用于行內注釋:

int fopen(char* s /* 文件名 */, int mode);

????????在上面的示例中,/* file name */用于說明函數參數,后續代碼仍然會正常執行。需要注意的是:這種注釋必須包含結束符號*/,否則可能導致錯誤。

printf("a "); /* 注釋一
printf("b ");
printf("c "); /* 注釋二 */
printf("d ");

????????本示例中,原意是在第一行和第三行代碼尾部各有一個注釋。但由于第一行注釋漏寫了結束符號,導致注釋一的范圍一直延續到第三行結束(觀察代碼中高亮與不高亮的部分)。

注意事項:

  1. 必須成對使用/**/,否則會導致注釋范圍錯誤
  2. 不支持嵌套注釋,遇到第一個*/就會結束注釋塊
  3. 編譯時注釋會被替換為一個空格,例如min/*注釋*/Value會變成min Value

雙斜杠//

????????第二種方式是使用雙斜杠//進行注釋,從//開始到行尾的內容都屬于注釋。這種注釋僅限于單行,既可以獨立成行,也可以跟在代碼語句后面。這是C99標準新增的語法。

示例:

// 這是單行注釋
int x = 1; // 語句后的注釋

????????需要注意的是,所有類型的注釋都不能出現在雙引號內。雙引號內的注釋符號會被視為字符串的一部分,失去注釋功能。

示例:(觀察代碼中高亮部分,代碼中并無不高亮部分,意思是注釋不起作用)

printf("// hello /* world */ ");

上述示例中,雙引號內的所有注釋符號都被當作普通字符處理。

2、注釋替換規則

編譯器會將注釋替換為一個空格。例如:

min/* 注釋 */Value

將被處理為min Value,而不是minValue?


十四、VS2022創建項目步驟

第一步:點擊創建新項目

第二步:選擇空項目,然后下一步

第三步:填寫項目名稱和路徑

第四步:項目創建完成

如果沒有左邊方框的內容就點擊視圖找到解決方案資源管理器:

第五步: 新建源文件過程

第六步:顯示所有模版并成功新建.c源文件

小知識:C++叫c plus plus或者cpp;C++代碼的文件后綴是.cpp

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90490.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90490.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90490.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WinUI3入門18:從APP打開商店鏈接以及實現內購

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

BI布局拖拽 (1) 深入react-gird-layout源碼

因為有個拖拉拽的需求&#xff0c;類似于quickBi那樣的效果。在網上調研了一下發現react-grid-layout實現效果類似&#xff0c;但其也有局限性&#xff0c;比如不支持嵌套&#xff0c;不支持在多個gridLyaout之間互相拖拽。 要求&#xff1a;基于react-grid-layout的思路&#…

CentOS環境搭建-快速升級G++版本

在CentOS環境中快速升級G編譯器版本&#xff0c;對于追求最新語言特性的開發者來說至關重要。由于CentOS默認的軟件倉庫可能不提供G的最新版本&#xff0c;我們通常需要借助第三方軟件源&#xff0c;如Developer Toolset或使用Spack等包管理器來完成這一任務。下面將詳細介紹兩…

分布式接口冪等性的演進和最佳實踐,含springBoot 實現(Java版本)

一、背景&#xff1a;為什么需要冪等性 在微服務、分布式架構下&#xff0c;網絡不可靠、請求重試機制&#xff08;如前端超時重發、客戶端重發、網關重試、消息消費失敗重試等&#xff09;會帶來重復請求&#xff0c;如果接口沒有冪等性&#xff0c;可能導致&#xff1a; 重復…

OGRE 3D----6. 背景圖片渲染實現詳解

1. 背景圖片渲染原理 1.1 渲染隊列機制 Ogre3D 使用渲染隊列(Render Queue)來控制對象的渲染順序。背景圖片需要在所有其他對象之前渲染,因此我們將其設置為 RENDER_QUEUE_BACKGROUND。 1.2 視圖變換控制 為了讓背景圖片始終保持在場景的最遠處,我們需要: 使用單位投影…

K線連續漲跌統計與分析工具

K線連續漲跌統計與分析工具 1. 概述 本工具是一個用于分析金融時間序列數據(特別是K線數據)的Python腳本,主要功能是統計連續n根同方向K線后,第n+1根K線的漲跌情況。該工具不僅提供統計分析功能,還支持圖形化標記以驗證結果,幫助交易者和量化分析師識別市場中的特定模式…

jQuery EasyUI 簡介

jQuery EasyUI 簡介 引言 隨著互聯網技術的飛速發展,前端開發變得越來越重要。jQuery EasyUI 作為一款流行的前端UI框架,極大地簡化了前端開發的工作流程,提高了開發效率。本文將詳細介紹 jQuery EasyUI 的起源、特點、使用方法以及在實際項目中的應用。 一、jQuery Easy…

《測試開發:從技術角度提升測試效率與質量》

測試開發的核心工作內容與職責解析 一、測試開發的定位與核心價值 測試開發&#xff08;Test Development&#xff0c;簡稱 TestDev 或 SDET&#xff09;是融合軟件開發能力與測試工程思維的復合型崗位&#xff0c;不同于傳統測試工程師&#xff0c;其核心目標是通過技術手段提…

20250710解決KickPi的K7開發板刷機之后出現DDR異常:ch:1 dq0 fail,write:0x1,read:0x20300

20250710解決KickPi的K7開發板刷機之后出現DDR異常&#xff1a;ch:1 dq0 fail,write:0x1,read:0x20300 2025/7/10 20:36[BEGIN] 2025/7/10 19:29:03 /DDR 2f85f4b2d4 cym 25/03/04-14:38.55,fwver: v1.09 In ch0 ttot10 ch0 ttot10 ch1 ttot10 ch0 ttot18 LPDDR4, 2112MHz chan…

Ansible:強大的自動部署工具

文章目錄零、Ansible介紹一、安裝 ansible二、配置SSH密鑰1.檢查密鑰是否存在2.兩邊的機器要互相有對方的密鑰三、自動部署1.傳輸文件(1)inventory.ini(2)sync_blt.yml(3)執行命令2.安裝軟件(1)inventory.ini(2)install_efvs.yml(3)執行命令零、Ansible介紹 Ansible 是一個開源…

Nacos的基本功能以及使用Feign進行微服務間的通信

Nacos是Dynamic Naming and Configuration Service的縮寫。What’s Nacos? 下面結合SpringBoot項目&#xff0c;為你介紹Nacos的基本功能以及如何使用Feign進行微服務間的通信。 一、Nacos的基本功能 Nacos是阿里巴巴開源的一個更易于構建云原生應用的動態服務發現、配置管…

C1編譯器和C2編譯器Test01

在HotSpot VM中內嵌有兩個JIT編譯器&#xff0c;分別為Client Compiler和Server Compiler&#xff0c;通常簡稱為C1編譯器和C2編譯器。開發人員可以通過如下命令顯式指定JVM在運行時到底使用哪一種即時編譯器。(1)-client&#xff1a;指定JVM運行在Client模式下&#xff0c;并使…

MongoDB與Spring Boot完整使用指南

目錄 1. MongoDB基礎概念 什么是MongoDB? 核心概念對比 文檔結構示例 2. MongoDB的特點與優勢 主要特點 適用場景 3. MongoDB基本操作 基本CRUD操作 插入文檔 查詢文檔 更新文檔 刪除文檔 4. Spring Boot集成MongoDB 步驟1:添加依賴 步驟2:配置數據庫連接 …

swift開發,關于應用、頁面、視圖的生命周期

目錄一、應用生命周期&#xff08;App Lifecycle&#xff09;UIKit (AppDelegate)SwiftUI (使用 ScenePhase)二、頁面生命周期&#xff08;ViewController Lifecycle&#xff09;三、視圖生命周期&#xff08;UIView Lifecycle&#xff09;四、SwiftUI 視圖生命周期五、關鍵對比…

借助HarmonyOS SDK,《NBA巔峰對決》實現“分鐘級啟動”到“秒級進場”

《NBA巔峰對決》是由望塵科技推出的國內首個真實還原5V5王朝模式的操作籃球手游&#xff0c;提供流暢操作手感和真實籃球賽場體驗。豐富的玩法在為玩家帶來高質游戲體驗的同時&#xff0c;間接帶來了啟動流程冗長的問題&#xff0c;資源更新階段的等待感尤為突出。 “我們發現&…

HT-LINK ICE:海速芯32Gbps信號調理芯片,40dB補償+國產自主,打破高速互聯瓶頸!

HT-LINK ICE&#xff08;TENX海速芯&#xff09;產品解析與推廣文案一、產品定位HT-LINK ICE是TENX海速芯推出的高速信號調理芯片&#xff0c;專為PCIe 5.0/6.0、USB4、Thunderbolt等超高速接口設計&#xff0c;提供信號完整性增強和時鐘恢復功能&#xff0c;適用于數據中心、A…

深入剖析 ADL:C++ 中的依賴查找機制及其編譯錯誤案例分析

一、ADL 的定義與背景&#xff08;一&#xff09;ADL 的定義ADL&#xff08;Argument-Dependent Lookup&#xff0c;依賴查找&#xff09;是 C 中一種特殊的名稱查找機制&#xff0c;用于在調用函數時&#xff0c;根據函數參數的類型來確定查找的命名空間范圍。ADL 的核心思想是…

【科研繪圖系列】R語言繪制相關系數圖

文章目錄 介紹加載R包數據下載導入數據數據預處理畫圖系統信息參考介紹 【科研繪圖系列】R語言繪制相關系數圖 加載R包 library(vegan) library(dplyr)# install.packages("./RVisulizationData/003.mantel test/ggcor_0.9.8.1.tar.gz", repos = NULL, type = &quo…

pharokka phold--快速噬菌體注釋工具

pharokka是一款專用于噬菌體基因組及宏基因組的快速標準化注釋工具。PS.仍在積極更新中&#xff0c;最近一次更新是在今年6.20。 若需對細菌基因組進行快速標準化注釋&#xff0c;建議使用Bakta。啟發pharokka開發及命名的Prokka也是優秀選擇&#xff0c;但Bakta實為Prokka的卓…

深入淺出 Python Asynchronous I/O:從 asyncio 入門到實戰

在現代軟件開發中&#xff0c;性能是一個永恒的話題。特別是在處理網絡請求、文件讀寫等 I/O 密集型任務時&#xff0c;傳統的同步編程模型可能會因為等待而浪費大量時間。為了解決這個問題&#xff0c;異步編程應運而生。Python 通過內置的 asyncio 庫&#xff0c;為開發者提供…