女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度剖析C語(yǔ)言的main函數(shù)

璟琰乀 ? 來(lái)源:csdn ? 作者:z_ryan ? 2020-12-18 17:07 ? 次閱讀

main的返回值

main函數(shù)的返回值用于說(shuō)明程序的退出狀態(tài)。如果返回0,則代表程序正常退出。返回其它數(shù)字的含義則由系統(tǒng)決定。通常,返回非零代表程序異常退出。

void main()

有一些書(shū)上的,都使用了void main( ) ,其實(shí)這是錯(cuò)誤的。C/C++ 中從來(lái)沒(méi)有定義過(guò)void main( ) 。

C++ 之父 Bjarne Stroustrup 在他的主頁(yè)上的 FAQ 中明確地寫(xiě)著 “The definition void main( ) { /* … */ } is not and never has been C++, nor has it even been C.” 這可能是因?yàn)?在 C 和 C++ 中,不接收任何參數(shù)也不返回任何信息的函數(shù)原型為“void foo(void);”。

可能正是因?yàn)檫@個(gè),所以很多人都誤認(rèn)為如果不需要程序返回值時(shí)可以把main函數(shù)定義成void main(void) 。然而這是錯(cuò)誤的!main 函數(shù)的返回值應(yīng)該定義為 int 類(lèi)型,C 和 C++ 標(biāo)準(zhǔn)中都是這樣規(guī)定的。

雖然在一些編譯器中,void main() 可以通過(guò)編譯,但并非所有編譯器都支持 void main() ,因?yàn)闃?biāo)準(zhǔn)中從來(lái)沒(méi)有定義過(guò) void main 。

g++3.2 中如果 main 函數(shù)的返回值不是 int 類(lèi)型,就根本通不過(guò)編譯。而 gcc3.2 則會(huì)發(fā)出警告。所以,為了程序擁有很好的可移植性,一定要用 int main ()。測(cè)試如下:

#include 《stdio.h》void main(){ printf(“Hello world”); return;}

運(yùn)行結(jié)果:g++ test.c

main()

那既然main函數(shù)只有一種返回值類(lèi)型,那么是不是可以不寫(xiě)?規(guī)定:不明確標(biāo)明返回值的,默認(rèn)返回值為int,也就是說(shuō) main()等同于int main(),而不是等同于void main()。

在C99中,標(biāo)準(zhǔn)要求編譯器至少給 main() 這種用法來(lái)個(gè)警告,而在c89中這種寫(xiě)法是被允許的。但為了程序的規(guī)范性和可讀性,還是應(yīng)該明確的指出返回值的類(lèi)型。測(cè)試代碼:

#include 《stdio.h》main(){ printf(“Hello world”); return 0;}

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

C和C++的標(biāo)準(zhǔn)

在 C99 標(biāo)準(zhǔn)中,只有以下兩種定義方式是正確的:

int main( void ) int main( int argc, char *argv[] )

若不需要從命令行中獲取參數(shù),就使用int main(void) ;否則的話,就用int main( int argc, char *argv[] )。當(dāng)然參數(shù)的傳遞還可以有其他的方式,在下一節(jié)中,會(huì)單獨(dú)來(lái)講。

main 函數(shù)的返回值類(lèi)型必須是 int ,這樣返回值才能傳遞給程序的調(diào)用者(如操作系統(tǒng)),等同于 exit(0),來(lái)判斷函數(shù)的執(zhí)行結(jié)果。

C++89中定義了如下兩種 main 函數(shù)的定義方式:

int main( ) int main( int argc, char *argv[] )

int main( ) 等同于 C99 中的 int main( void ) ;int main( int argc, char*argv[] ) 的用法也和C99 中定義的一樣。同樣,main函數(shù)的返回值類(lèi)型也必須是int。

return 語(yǔ)句

如果 main 函數(shù)的最后沒(méi)有寫(xiě) return 語(yǔ)句的話,C99 和c++89都規(guī)定編譯器要自動(dòng)在生成的目標(biāo)文件中加入return 0,表示程序正常退出。

不過(guò),建議你最好在main函數(shù)的最后加上return語(yǔ)句,雖然沒(méi)有這個(gè)必要,但這是一個(gè)好的習(xí)慣。在linux下我們可以使用shell命令:echo $? 查看函數(shù)的返回值。

#include 《stdio.h》int main(){ printf(“Hello world”);}

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

同時(shí),需要說(shuō)明的是return的返回值會(huì)進(jìn)行 類(lèi)型轉(zhuǎn)換,比如:若return 1.2 ;會(huì)將其強(qiáng)制轉(zhuǎn)換為1,即真正的返回值是1,同理,return ‘a(chǎn)’ ;的話,真正的返回值就是97,;但是若return “abc”;便會(huì)報(bào)警告,因?yàn)闊o(wú)法進(jìn)行隱式類(lèi)型轉(zhuǎn)換。

測(cè)試main函數(shù)返回值的意義

前文說(shuō)到,main函數(shù)如果返回0,則代表程序正常退出。通常,返回非零代表程序異常退出。在本文的最后,測(cè)試一下: test.c:

#include 《stdio.h》int main(){ printf(“c 語(yǔ)言”); return 11.1; }

在終端執(zhí)行如下:

testSigpipe git:(master) vim test.c testSigpipe git:(master) gcc test.c testSigpipe git:(master) 。/a.out && echo “hello world” #&&與運(yùn)算,前面為真,才會(huì)執(zhí)行后邊的c 語(yǔ)言

可以看出,操作系統(tǒng)認(rèn)為main函數(shù)執(zhí)行失敗,因?yàn)閙ain函數(shù)的返回值是11

testSigpipe git:(master) 。/a.out testSigpipe git:(master) echo $?11

若將main函數(shù)中返回值該為0的話:

testSigpipe git:(master) vim test.c testSigpipe git:(master) gcc test.c testSigpipe git:(master) 。/a.out && echo “hello world” #helloc 語(yǔ)言hello world

可以看出,正如我們所期望的一樣,main函數(shù)返回0,代表函數(shù)正常退出,執(zhí)行成功;返回非0,代表函數(shù)出先異常,執(zhí)行失敗。

main函數(shù)傳參

首先說(shuō)明的是,可能有些人認(rèn)為main函數(shù)是不可傳入?yún)?shù)的,但是實(shí)際上這是錯(cuò)誤的。main函數(shù)可以從命令行獲取參數(shù),從而提高代碼的復(fù)用性。

函數(shù)原形

為main函數(shù)傳參時(shí),可選的main函數(shù)原形為:

int main(int argc , char* argv[],char* envp[]);

參數(shù)說(shuō)明:

①、第一個(gè)參數(shù)argc表示的是傳入?yún)?shù)的個(gè)數(shù) 。

②、第二個(gè)參數(shù)char* argv[],是字符串?dāng)?shù)組,用來(lái)存放指向的字符串參數(shù)的指針數(shù)組,每一個(gè)元素指向一個(gè)參數(shù)。各成員含義如下:

argv[0]:指向程序運(yùn)行的全路徑名。

argv[1]:指向執(zhí)行程序名后的第一個(gè)字符串 ,表示真正傳入的第一個(gè)參數(shù)。

argv[2]:指向執(zhí)行程序名后的第二個(gè)字符串 ,表示傳入的第二個(gè)參數(shù)。

…… argv[n]:指向執(zhí)行程序名后的第n個(gè)字符串 ,表示傳入的第n個(gè)參數(shù)。

規(guī)定:argv[argc]為NULL ,表示參數(shù)的結(jié)尾。

③、第三個(gè)參數(shù)char* envp[],也是一個(gè)字符串?dāng)?shù)組,主要是保存這用戶(hù)環(huán)境中的變量字符串,以NULL結(jié)束。envp[]的每一個(gè)元素都包含ENVVAR=value形式的字符串,其中ENVVAR為環(huán)境變量,value為其對(duì)應(yīng)的值。

envp一旦傳入,它就只是單純的字符串?dāng)?shù)組而已,不會(huì)隨著程序動(dòng)態(tài)設(shè)置發(fā)生改變。可以使用putenv函數(shù)實(shí)時(shí)修改環(huán)境變量,也能使用getenv實(shí)時(shí)查看環(huán)境變量,但是envp本身不會(huì)發(fā)生改變;平時(shí)使用到的比較少。

注意:main函數(shù)的參數(shù)char* argv[]和char* envp[]表示的是字符串?dāng)?shù)組,書(shū)寫(xiě)形式不止char* argv[]這一種,相應(yīng)的argv[][]和 char** argv均可。

char* envp[]

寫(xiě)個(gè)小測(cè)試程序,測(cè)試main函數(shù)的第三個(gè)參數(shù):

#include 《stdio.h》int main(int argc ,char* argv[] ,char* envp[]){ int i = 0; while(envp[i++]) { printf(“%s”, envp[i]); } return 0;}

運(yùn)行結(jié)果:部分截圖

envp[] 獲得的信息等同于Linux下env命令的結(jié)果。

常用版本

在使用main函數(shù)的帶參版本的時(shí),最常用的就是:**int main(int argc , char* argv[]);**變量名稱(chēng)argc和argv是常規(guī)的名稱(chēng),當(dāng)然也可以換成其他名稱(chēng)。

命令行執(zhí)行的形式為:可執(zhí)行文件名 參數(shù)1 參數(shù)2 … … 參數(shù)n。可執(zhí)行文件名稱(chēng)和參數(shù)、參數(shù)之間均使用空格隔開(kāi)。

示例程序

#include 《stdio.h》int main(int argc, char* argv[]){ int i; printf(“Total %d arguments”,argc); for(i = 0; i 《 argc; i++) { printf(“Argument argv[%d] = %s ”,i, argv[i]); } return 0;}

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

cpp_workspace git:(master) vim testmain.c cpp_workspace git:(master) gcc testmain.c cpp_workspace git:(master) 。/a.out 1 2 3 #./a.out為程序名 1為第一個(gè)參數(shù) , 2 為第二個(gè)參數(shù), 3 為第三個(gè)參數(shù)Total 4 argumentsArgument argv[0] = 。/a.out Argument argv[1] = 1 Argument argv[2] = 2 Argument argv[3] = 3 Argument argv[4] = (null) #默認(rèn)argv[argc]為null

main的執(zhí)行順序

可能有的人會(huì)說(shuō),這還用說(shuō),main函數(shù)肯定是程序執(zhí)行的第一個(gè)函數(shù)。那么,事實(shí)果然如此嗎?相信在看了本節(jié)之后,會(huì)有不一樣的認(rèn)識(shí)。

為什么說(shuō)main()是程序的入口

linux系統(tǒng)下程序的入口是”_start”,這個(gè)函數(shù)是linux系統(tǒng)庫(kù)(Glibc)的一部分,當(dāng)我們的程序和Glibc鏈接在一起形成最終的可執(zhí)行文件的之后,這個(gè)函數(shù)就是程序執(zhí)行初始化的入口函數(shù)。通過(guò)一個(gè)測(cè)試程序來(lái)說(shuō)明:

#include 《stdio.h》int main(){ printf(“Hello world”); return 0;}

編譯:

gcc testmain.c -nostdlib # -nostdlib (不鏈接標(biāo)準(zhǔn)庫(kù))

程序執(zhí)行會(huì)引發(fā)錯(cuò)誤:/usr/bin/ld: warning: cannot find entry symbol _start;未找到這個(gè)符號(hào)

所以說(shuō):

編譯器缺省是找 __start 符號(hào),而不是 main

__start 這個(gè)符號(hào)是程序的起始

main 是被標(biāo)準(zhǔn)庫(kù)調(diào)用的一個(gè)符號(hào)

那么,這個(gè)_start和main函數(shù)有什么關(guān)系呢?下面我們來(lái)進(jìn)行進(jìn)一步探究。

_start函數(shù)的實(shí)現(xiàn)該入口是由ld鏈接器默認(rèn)的鏈接腳本指定的,當(dāng)然用戶(hù)也可以通過(guò)參數(shù)進(jìn)行設(shè)定。_start由匯編代碼實(shí)現(xiàn)。大致用如下偽代碼表示:

void _start(){ %ebp = 0; int argc = pop from stack char ** argv = top of stack; __libc_start_main(main, argc, argv, __libc_csu_init, __linc_csu_fini, edx, top of stack);}

對(duì)應(yīng)的匯編代碼如下:

_start: xor ebp, ebp //清空ebp pop esi //保存argc,esi = argc mov esp, ecx //保存argv, ecx = argv push esp //參數(shù)7保存當(dāng)前棧頂 push edx //參數(shù)6 push __libc_csu_fini//參數(shù)5 push __libc_csu_init//參數(shù)4 push ecx //參數(shù)3 push esi //參數(shù)2 push main//參數(shù)1 call _libc_start_mainhlt

可以看出,在調(diào)用_start之前,裝載器就會(huì)將用戶(hù)的參數(shù)和環(huán)境變量壓入棧中。

main函數(shù)運(yùn)行之前的工作

從_start的實(shí)現(xiàn)可以看出,main函數(shù)執(zhí)行之前還要做一系列的工作。主要就是初始化系統(tǒng)相關(guān)資源:

Some of the stuff that has to happen before main():set up initial stack pointer initialize static and global data zero out uninitialized data run global constructorsSome of this comes with the runtime library‘s crt0.o file or its __start() function. Some of it you need to do yourself.Crt0 is a synonym for the C runtime library.

1.設(shè)置棧指針

2.初始化static靜態(tài)和global全局變量,即data段的內(nèi)容

3.將未初始化部分的賦初值:數(shù)值型short,int,long等為0,bool為FALSE,指針為NULL,等等,即.bss段的內(nèi)容

4.運(yùn)行全局構(gòu)造器,類(lèi)似c++中全局構(gòu)造函數(shù)

5.將main函數(shù)的參數(shù),argc,argv等傳遞給main函數(shù),然后才真正運(yùn)行main函數(shù)

main之前運(yùn)行的代碼

下面,我們就來(lái)說(shuō)說(shuō)在mian函數(shù)執(zhí)行之前到底會(huì)運(yùn)行哪些代碼:(1)全局對(duì)象的構(gòu)造函數(shù)會(huì)在main 函數(shù)之前執(zhí)行。

(2)一些全局變量、對(duì)象和靜態(tài)變量、對(duì)象的空間分配和賦初值就是在執(zhí)行main函數(shù)之前,而main函數(shù)執(zhí)行完后,還要去執(zhí)行一些諸如釋放空間、釋放資源使用權(quán)等操作

(3)進(jìn)程啟動(dòng)后,要執(zhí)行一些初始化代碼(如設(shè)置環(huán)境變量等),然后跳轉(zhuǎn)到main執(zhí)行。全局對(duì)象的構(gòu)造也在main之前。

(4)通過(guò)關(guān)鍵字attribute,讓一個(gè)函數(shù)在主函數(shù)之前運(yùn)行,進(jìn)行一些數(shù)據(jù)初始化、模塊加載驗(yàn)證等。

示例代碼

①、通過(guò)關(guān)鍵字attribute

#include 《stdio.h》__attribute__((constructor)) void before_main_to_run() { printf(“Hi~,i am called before the main function!”); printf(“%s”,__FUNCTION__); } __attribute__((destructor)) void after_main_to_run() { printf(“%s”,__FUNCTION__); printf(“Hi~,i am called after the main function!”);} int main( int argc, char ** argv ) { printf(“i am main function, and i can get my name(%s) by this way.”,__FUNCTION__); return 0; }

②、全局變量的初始化

#include 《iostream》using namespace std;inline int startup_1(){ cout《《“startup_1 run”《《endl; return 0;}int static no_use_variable_startup_1 = startup_1();int main(int argc, const char * argv[]) { cout《《“this is main”《《endl; return 0;}

至此,我們就聊完了main函數(shù)執(zhí)行之前的事情,那么,你是否還以為main函數(shù)也是程序運(yùn)行的最后一個(gè)函數(shù)呢?

結(jié)果當(dāng)然不是,在main函數(shù)運(yùn)行之后還有其他函數(shù)可以執(zhí)行,main函數(shù)執(zhí)行完畢之后,返回到入口函數(shù),入口函數(shù)進(jìn)行清理工作,包括全局變量析構(gòu)、堆銷(xiāo)毀、關(guān)閉I/O等,然后進(jìn)行系統(tǒng)調(diào)用結(jié)束進(jìn)程。

main函數(shù)之后執(zhí)行的函數(shù)

1、全局對(duì)象的析構(gòu)函數(shù)會(huì)在main函數(shù)之后執(zhí)行;2、用atexit注冊(cè)的函數(shù)也會(huì)在main之后執(zhí)行。

atexit函數(shù)

原形:

int atexit(void (*func)(void));

atexit 函數(shù)可以“注冊(cè)”一個(gè)函數(shù),使這個(gè)函數(shù)將在main函數(shù)正常終止時(shí)被調(diào)用,當(dāng)程序異常終止時(shí),通過(guò)它注冊(cè)的函數(shù)并不會(huì)被調(diào)用。

編譯器必須至少允許程序員注冊(cè)32個(gè)函數(shù)。如果注冊(cè)成功,atexit 返回0,否則返回非零值,沒(méi)有辦法取消一個(gè)函數(shù)的注冊(cè)。

在 exit 所執(zhí)行的任何標(biāo)準(zhǔn)清理操作之前,被注冊(cè)的函數(shù)按照與注冊(cè)順序相反的順序被依次調(diào)用。每個(gè)被調(diào)用的函數(shù)不接受任何參數(shù),并且返回類(lèi)型是 void。被注冊(cè)的函數(shù)不應(yīng)該試圖引用任何存儲(chǔ)類(lèi)別為 auto 或 register 的對(duì)象(例如通過(guò)指針),除非是它自己所定義的。

多次注冊(cè)同一個(gè)函數(shù)將導(dǎo)致這個(gè)函數(shù)被多次調(diào)用。函數(shù)調(diào)用的最后的操作就是出棧過(guò)程。main()同樣也是一個(gè)函數(shù),在結(jié)束時(shí),按出棧的順序調(diào)用使用atexit函數(shù)注冊(cè)的,所以說(shuō),函數(shù)atexit是注冊(cè)的函數(shù)和函數(shù)入棧出棧一樣,是先進(jìn)后出的,先注冊(cè)的后執(zhí)行。通過(guò)atexit可以注冊(cè)回調(diào)清理函數(shù)。可以在這些函數(shù)中加入一些清理工作,比如內(nèi)存釋放、關(guān)閉打開(kāi)的文件、關(guān)閉socket描述符、釋放鎖等等。

#include《stdio.h》#include《stdlib.h》void fn0( void ), fn1( void ), fn2( void ), fn3( void ), fn4( void );int main( void ){ //注意使用atexit注冊(cè)的函數(shù)的執(zhí)行順序:先注冊(cè)的后執(zhí)行 atexit( fn0 ); atexit( fn1 ); atexit( fn2 ); atexit( fn3 ); atexit( fn4 ); printf( “This is executed first.” ); printf(“main will quit now!”); return 0;}void fn0(){ printf( “first register ,last call” );}void fn1({ printf( “next.” );}void fn2(){ printf( “executed ” );}void fn3(){ printf( “is ” );}void fn4(){ printf( “This ” );}

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140327
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3679

    瀏覽量

    94864
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4369

    瀏覽量

    64191
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    為什么不需要給回調(diào)函數(shù)傳遞參數(shù)

    回調(diào)函數(shù)C語(yǔ)言里面一個(gè)重要機(jī)制。
    的頭像 發(fā)表于 04-15 10:11 ?220次閱讀

    C語(yǔ)言如何處理函數(shù)的返回值

    的那樣,直接把 1234 賦值給了變量 ret? 搞懂這個(gè)問(wèn)題不難,只要看下匯編代碼就行。 把代碼編譯一下,只編譯不鏈接,得到的就是C對(duì)應(yīng)的匯編代碼。 這塊是 test 函數(shù),不用管上面這些代碼,如果一行一行去分析,沒(méi)有匯編基礎(chǔ)的話確實(shí)會(huì)頭疼。 看下這行代碼,很明顯,12
    的頭像 發(fā)表于 01-16 09:21 ?358次閱讀

    EE-128:C語(yǔ)言中的DSP:從C調(diào)用匯編類(lèi)成員函數(shù)

    電子發(fā)燒友網(wǎng)站提供《EE-128:C語(yǔ)言中的DSP:從C調(diào)用匯編類(lèi)成員函數(shù).pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>中的DSP:從<b class='flag-5'>C</b>調(diào)用匯編類(lèi)成員<b class='flag-5'>函數(shù)</b>

    C語(yǔ)言筆試題

    來(lái)看一個(gè)C語(yǔ)言筆試題,應(yīng)該很少有人能給出正確答案。 #include int f(){ printf("this is f ..."); return 1;}int g(){ printf
    的頭像 發(fā)表于 12-30 09:48 ?364次閱讀

    Triton編譯器支持的編程語(yǔ)言

    編寫(xiě)和優(yōu)化深度學(xué)習(xí)代碼。Python是一種廣泛使用的高級(jí)編程語(yǔ)言,具有簡(jiǎn)潔易讀、易于上手、庫(kù)豐富等特點(diǎn),非常適合用于深度學(xué)習(xí)應(yīng)用的開(kāi)發(fā)。 二、領(lǐng)域特定語(yǔ)言(DSL) Triton也提供
    的頭像 發(fā)表于 12-24 17:33 ?859次閱讀

    同樣是函數(shù),在CC++中有什么區(qū)別

    同樣是函數(shù),在 CC++ 中有什么區(qū)別? 第一個(gè)返回值。 C語(yǔ)言函數(shù)可以不寫(xiě)返回值類(lèi)型,
    的頭像 發(fā)表于 11-29 10:25 ?792次閱讀

    4G模組加解密藝術(shù):通用函數(shù)深度解讀

    今天是對(duì)加解密通用函數(shù)深度解讀,我將詳細(xì)講解,建議收藏,不可錯(cuò)過(guò)。
    的頭像 發(fā)表于 11-12 09:58 ?565次閱讀
    4G模組加解密藝術(shù):通用<b class='flag-5'>函數(shù)</b>的<b class='flag-5'>深度</b>解讀

    使用C語(yǔ)言實(shí)現(xiàn)函數(shù)模板

      用C語(yǔ)言能不能實(shí)現(xiàn)一個(gè)通用的函數(shù),既能完成整數(shù)的相加,又能完成浮點(diǎn)數(shù)的相加?
    的頭像 發(fā)表于 11-09 11:38 ?852次閱讀

    C語(yǔ)言中的socket編程基礎(chǔ)

    數(shù)據(jù) 步驟6:關(guān)閉socket 創(chuàng)建socket 在C語(yǔ)言中,創(chuàng)建socket需要使用socket()函數(shù)。這個(gè)函數(shù)需要兩個(gè)參數(shù):域
    的頭像 發(fā)表于 11-01 16:51 ?1027次閱讀

    C語(yǔ)言與Java語(yǔ)言的對(duì)比

    C語(yǔ)言和Java語(yǔ)言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢(shì)和特點(diǎn),適用于不同的應(yīng)用場(chǎng)景。以下將從語(yǔ)法特性、內(nèi)存管理、跨平臺(tái)性、性能、應(yīng)用領(lǐng)域等多個(gè)方面對(duì)C
    的頭像 發(fā)表于 10-29 17:31 ?937次閱讀

    MEMS 可編程振蕩器的卓越代表:SiT9121 系列(1 to 220 MHZ)深度剖析

    MEMS 可編程振蕩器的卓越代表:SiT9121 系列(1 to 220 MHZ)深度剖析
    的頭像 發(fā)表于 08-13 10:56 ?903次閱讀
    MEMS 可編程振蕩器的卓越代表:SiT9121 系列(1 to 220 MHZ)<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    探索巔峰性能 | 迅為RK3588開(kāi)發(fā)板深度剖析

    探索巔峰性能 | 迅為RK3588開(kāi)發(fā)板深度剖析
    的頭像 發(fā)表于 08-12 14:07 ?1468次閱讀
    探索巔峰性能 | 迅為RK3588開(kāi)發(fā)板<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    表面貼裝低相位噪音晶體振蕩器 DSO531SHH 深度剖析

    表面貼裝低相位噪音晶體振蕩器 DSO531SHH 深度剖析
    的頭像 發(fā)表于 07-26 14:12 ?635次閱讀
    表面貼裝低相位噪音晶體振蕩器 DSO531SHH <b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    利用Matlab函數(shù)實(shí)現(xiàn)深度學(xué)習(xí)算法

    在Matlab中實(shí)現(xiàn)深度學(xué)習(xí)算法是一個(gè)復(fù)雜但強(qiáng)大的過(guò)程,可以應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、自然語(yǔ)言處理、時(shí)間序列預(yù)測(cè)等。這里,我將概述一個(gè)基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)、訓(xùn)練過(guò)程、以及測(cè)試和評(píng)估,并提供一個(gè)基于Matlab的
    的頭像 發(fā)表于 07-14 14:21 ?3448次閱讀

    PLC編程語(yǔ)言C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語(yǔ)言C語(yǔ)言各自扮演著重要的角色。盡管兩者都是編程語(yǔ)言,但它們?cè)诙鄠€(gè)方面存在顯著的區(qū)別。本文將從多個(gè)維度深入探討PLC編程
    的頭像 發(fā)表于 06-14 17:11 ?4382次閱讀