❶ C語言總是從什麼函數開始執行
一個c語言程序的執行,從main函數中的指令開始執行。
一個程序,無論復雜或簡單,總體上都是一個「函數」;這個函數就稱為「main()
函數」,也就是「主函數」。比如有個「做菜」程序,那麼「
做菜
」這個過程就是「主函數」。在主函數中,根據情況,你可能還需要調用「買菜,切菜,炒菜」等子函數。
main函數在程序中大多數是必須存在的,但是依然有例外情況,比如windows編程中可以編寫一個動態鏈接庫(dll)模塊,這是其他windows程序可以使用的代碼。由於dll模塊不是獨立的程序,因此不需要main函數。再比如,用於專業環境的程序-----如機器人中的控制晶元--可能不需要main函數。
❷ 在一個C語言程序的執行是從( )。 A) 本程序的main函數開始,到main函數結束。 B)
從main函數開始到main函數結束。
答案選A。
C語言常考考點:
1、一個C語言源程序可以由一個或多個源文件組成。
2、每個源文件可由一個或多個函數組成。
3、一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。是整個程序的入口。
4、源程序中可以有預處理命令(包括include 命令,ifdef、ifndef命令、define命令),預處理命令通常應放在源文件或源程序的最前面。
5、每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。(結構體、聯合體、枚舉型的聲明的「}」後要加「 ;」。)
6、標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
(2)程序編譯從主函數開始執行擴展閱讀:
C語言是一門通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。[1]目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
❸ 單片機里的程序是從main函數開始執行的嗎請高手進。
那得看你的程序是怎麼寫的,可以配置讓單片機先執行別的程序再執行main
如果你沒有任何控制的話,執行完全部的程序,會從main()開始,如果要控制的話,也很簡單
分為兩類:
一類是不執行下面的指令,返回main()第一句指令,那直接使用return;就可以了
另一類是不范圍main()第一句指令,而從中間某一句開始執行,有兩種方法
1.對於循環層數較少的循環,可以使用break;
2.對於循環層數較多,不建議每層都使用break那就利用標簽也可以做到,你只要在程序需要的位置設個標簽,在程序最後返回標簽,就可以了
例如:
main()
{
k=1;
start:
P0=0x00;
//後面程序省略
//程序最後書寫如下這里可以加個你需要的條件,滿足條件後,跳轉從main{}的第一句開始再次執行
goto
start;
}
我經常這樣做,實踐證明,真的很好用,你可以試試
❹ 一個c語言程序的執行總是從該函數的main開始,在main函數最後結束
main()函數稱之為主函數,一個C程序總是從main()函數開始執行的,但是不一定在main函數最後結束。
在 main() 之後的最後一條語句結束後,程序還要運行一些代碼,以正常返回操作系統。main函數執行完後還執行其他語句,
有時候需要有一種與程序退出方式無關的方法來進行程序退出時的必要處理,方法就是用atexit()函數來注冊程序正常終止時要被調用的函數,atexit()函數的參數是一個函數指針,函數指針指向一個沒有參數也沒有返回值的函數,它的原型是:
int atexit(void (*)(void));
(4)程序編譯從主函數開始執行擴展閱讀
main函數的使用
示例:
#include <stdlib.h>
#include <stdio.h>
void fn1(void);
void fn2(void);
int main(void)
{
atexit(fn1);
atexit(fn2);
printf("main exit ... ");
return 0;
}
void fn1()
{
printf("calling fn1()... ");
}
void fn2()
{
printf("calling fn2()... ");
}
❺ C程序必須從main()函數開始執行
這是在面試中被問到的一個問題,回答了是。這問題第一感覺答案就是否定的,一時也沒想出來理由只能回答了是。當時太緊張了,其實回想一下匯編語言就該想到程序的入口地址是可以指定的,c語言編譯器默認以main作為入口地址。
網上查閱後,發現了 __attribute__ 這個關鍵字,它可以設置函數屬性,變數屬性,類型屬性。
1、前言
最近看到一份代碼,看到一個函數前面用__attribute__((destructor))修飾,當時感覺有點怪怪的,搜了整個程序,也沒發現哪個地方調用這個函數。於是從字面意思猜想,該函數會在程序結束後自動調用,與C++中的析構函數類似。第一次接觸GNU下的attribute,總結一下。
2、__attribute__介紹
__attribute__可以設置函數屬性(Function Attribute)、變數屬性(Variable Attribute)和類型屬性(Type Attribute)。__attribute__前後都有兩個下劃線,並且後面會緊跟一對原括弧,括弧裡面是相應的__attribute__參數
__attribute__語法格式為:__attribute__ ( ( attribute-list ) )
若函數被設定為constructor屬性,則該函數會在main()函數執行之前被自動的執行。類似的,若函數被設定為destructor屬性,則該函數會在main()函數執行之後或者exit()被調用後被自動的執行。例如下面的程序:
看下面的例子:
// gcc 編譯器#include<stdio.h>__attribute__((constructor)) void before_main(){ printf("%s ",__FUNCTION__);}__attribute__((destructor)) void after_main(){ printf("%s ",__FUNCTION__);}int main(){ printf("%s ",__FUNCTION__); return 0;}
輸出結果為:before_main
main
after_main
可以看到上面的程序並不是從main函數開始執行的。constructor 設置在main前面執行,destructor 設置在main之後執行。
❻ C 語言從主函數開始執行到主函數結束是什麼意思誰給我具體解釋下
通俗點說就是函數的執行時逐行掃描讀取語句的,機器在執行你的程序時候會先找到你的main函數(主函數)
然後從主函數開始一行行讀你的語句,碰到你寫的子函數時,機器對主函數的掃描暫停,轉到你的子函數具體代碼處再次一行行讀並執行你的子函數語句,等子函數讀完了就回到你原來暫停的主函數那裡,繼續讀剩下的主函數,直到主函數的最後一個字元讀完,程序結束。
❼ C語言中總是從main函數開始執行,那執行好main函數後,是按照從上到下的順序執行嗎
進入程序後,就開始找main函數,可能是int main也可能是void main等。
然後可能遇到判斷、循環、分支結構,然後按各自的語法分別執行,還可能遇到被調函數,到了那裡就再去執行被調函數,執行完被調函數就再回來。
直到main函數全部執行完畢,直到最後一行結束,然後程序退出,運行界面出現perss any key to continue。
順序就是從上到下。遇到一些結構遵循結構的語法進行,但是整體順序就是由上到下。
❽ c語言中任何程序的運行總是從主函數開始,在什麼函數中結束
從main函數開始,main結束後整個程序結束。其他函數都是直接或間接被main調用。
❾ C語言 C語言程序為什麼總是從主函數開始執行
各種程序語言都得有一個入口,不然程序怎知道從哪開始運行呢。
C語言規定要從主函數(main)入口開始運行,編譯器也會把main作為程序的入口進行編譯。