C語言編譯原理問題,c語言程式設計問題

2023-04-21 05:15:19 字數 4102 閱讀 5116

1樓:匿名使用者

第一個問題:編譯時是否有影響無關緊要只是你的原始檔變大了,但是執行起來是沒有影響的。

第二個:採用靜態全域性變數是為了在連線多個檔案時防止重名問題出現,因為程式設計師在程式設計時不會一個人完成一個較大程式,必需要分工,每個人都用自己的檔案來寫程式,這樣在多個檔案中可能會把名字起重了,比如在本檔案中用static 型別 a定義後,a就只能是b檔案的全域性變數,這時a檔案也可以用static 型別 a來定義,但是它僅限於a檔案,當然如果你不把a檔案和b檔案合在一起就沒啥意義了,可以說如果b檔案的執行結束了,這個靜態全域性變數就被釋放了。

第三個:只要應用程式結束,變數就釋放了。

第四個:開闢的空間放在記憶體中,也就是ram(隨機存取儲存器),你理解的對。

2樓:孫錫濤

記憶體開闢空間,ram是隻讀屬性的記憶體空間,不可寫。

3樓:蝸牛吃小菜

編譯時是否有影響無關緊要只是你的原始檔變大了,但是執行起來是沒有影響的!

4樓:幽幽崽

沒有看懂,敘述清楚點,估計能整~~~

5樓:匿名使用者

檔案a裡面已經include ,現在想在檔案b中也include 沒有什麼影響和變化。

a的記憶體使用期限是你下次再定義時。

6樓:網友

難度太大了,找高手呵!

7樓:村頭老子行

檔案a,b和其他一些檔案編譯之後一起生成一個檔案。檔案a裡面已經include headf1.

h,現在想在檔案b中也include ,請問這樣做之後在編譯方面有什麼影響和變化?

多包含一個標頭檔案會有什麼影響?

沒有影響。在檔案a中呼叫了檔案b中的函式funcitonb(),而在functionb()中要用到靜態的全域性變數a 請問a的記憶體使用期限是多久?

靜態全域性變數的存活期是程式開始執行至程式正常關閉這段時間。

還有,extern 型的全域性變數的記憶體使用期限是多久?

全域性變數的存活期是程式開始執行至程式正常關閉這段時間。

用malloc開闢的空間是在**面?是不是就是所謂的ram,如果不是與ram有什麼區別呢?

記憶體開闢空間,ram是隻讀屬性的記憶體空間,不可寫。

c語言程式設計問題 5

8樓:有柴米呀呀呀呀

提問怎麼改。

把replace函式提到main函式外面。

提到main函式的前面。

或者在main前面寫一個replace函式宣告宣告報告裡面呢,還寫了呼叫時的型別是衝突的。

c語言程式設計問題

c語言編譯原理

9樓:俊小如

1、預處理階段:

主要工作是將標頭檔案插入到所寫的**中,生成副檔名為「.i」的檔案替換原來的副檔名為「.c」的檔案,但是原來的檔案仍然保留,只是執行過程中的實際檔案發生了改變。

這裡所說的替換並不是指原來的檔案被刪除)

2、彙編階段:

插入組合語言程式,將**翻譯成組合語言。編譯器首先要檢查**的規範性、是否有語法錯誤等,以確定**的實際要做的工作,在檢查無誤後,編譯器把**翻譯成組合語言,同時將副檔名為「.i」的檔案翻譯成副檔名為「.

s」的檔案。

3、編譯階段:

將組合語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程式的格式,將副檔名為「.s」的檔案翻譯成副檔名為「.o」的二進位制檔案。

在示例**中,改**檔案呼叫了標準庫中printf函式。而printf函式的實際儲存位置是一個單獨編譯的目標檔案(編譯的結果也是副檔名為「.o」的檔案),所以此時主函式呼叫的時候,需要將該檔案(即printf函式所在的編譯檔案)與hello world檔案整合到一起,此時連結器就可以大顯神通了,將兩個檔案合併後生成一個可執行目標檔案。

關於c語言在編譯時常出現的錯誤有哪些?

10樓:匿名使用者

一般都是格式,和標點方面的錯誤,程式設計演算法上的錯誤是在編譯的時候檢查不出來的。

11樓:匿名使用者

這個問題很難。。。錯誤也是因個人而異~

個人覺得剛學c語言的要注意指標那裡級別的問題。

一級指標*p 二級指標**p 指向一維陣列的指標(*p)[n] 這些都不能隨意的賦值,弱一點的編譯器也許檢查不出來,但是這是不對的,要注意吧。

12樓:匿名使用者

這個說不大清楚,主要語法錯誤,樓主自己去練習練習就有經驗了。

為什麼會編譯出錯?用的是c語言 5

13樓:格里程式設計辦公技巧

提示已經說明了錯誤原因,等號是賦值,左邊必須是變數不能是結果。

這裡應該是判斷那是==,表示邏輯等於。

14樓:鉞鴻福

第9行的「=」應該是「==吧,=是賦值。

c++為什麼不能編譯

15樓:

摘要。親親您好c++編譯的時候,會分析編譯檔案的字尾名(也就是副檔名)

c++為什麼不能編譯。

親親您好c++編譯的時候,會分析編譯檔案的字尾名(也就是副檔名)親c++能執行編譯的字尾名,預設是 .cpp 和 .c你現在編譯的檔案沒有副檔名,所以編譯錯誤,修改檔名,加上副檔名。

就是我以前一開啟這個編譯的圖示是亮的,可是現在開啟就不好使了。

建議您重啟看看親。

然後我重啟了也不好使。

親親,它都不能用肯定不亮。

c語言程式設計問題

16樓:貳彤雲憑懌

我解釋下遞迴函式吧:f(6)中有f(6/2)即f(3)和printf函式,但要等f(3)執行完後才執行printf函式(輸出6),f(3)中有f(3/2)即f(1)和printf函式,但要等f(1)執行完後才執行printf函式(輸出3)

17樓:粘代卉普煦

這是個遞迴問題,fun()函式在函式體內部又呼叫了自己。

具體解法可以這樣理解:

1、執行if(x/2>0)

2、若結果為真,執行fun(x/2);,後面那句printf("%d",x);暫時不執行。

3、當執行完fun(x/2)[裡面可能還包含了fun()這樣的呼叫],再執行第2步中未執行的printf("%d",x);

舉例:fun(6);

1、執行if(6/2>0)

2、由於6/2=3,所以,執行fun(6/2),即fun(3),這時,printf("%d",x=6)這句暫時不執行,等fun(3)執行完了再執行。

3、執行fun(3),這又是一個fun()函式,所以,仍然先判斷if(3/2>0),4、顯然,3/2=1,大於0,這時,先執行fun(1/2),printf("%d",x=3)暫不執行,等fun(1/2)執行完了再執行。

2=0,所以,不符合要求,執行printf("%d",x=1);

6、這時,fun(1/2)便執行完了,接著,需要執行剛才未執行的printf("%d",x=3)

7、printf("%d",x=3)也執行完了,需要執行剛才未執行的printf("%d",x=6)

最後,得到的結果就是136

對於main0

這個是一個判斷條件的問題。關鍵是要看這幾個符號的結合順序。

00(x<20),左邊是真,右邊是假,&&要兩邊是真,結果才是真,所以,這個表示式的結果是假,即0

c語言程式設計的問題?

18樓:匿名使用者

這個語句的末尾有一個分號,因此後面的。

不在迴圈體內。

這裡反映了一個重要的習慣:迴圈體始終用大括號括起來,不要省略大括號,即使只有一句。

C語言程式設計,c語言程式設計

呵呵你們些傢伙就為了分數,有什麼用?人家的問題又不給他解決,我是c語言沒學好,只能心有餘而力不足了!給我200分行嗎。把郵箱發到我空間裡,我做了給你發!告我你的郵箱,我給你發過去。一分鐘讀懂。c語言程式設計。可以的,按照你的要求程式設計好。太多了,可以具體一下是需要哪個嗎。a 0 從右往左開始運算。...

c語言程式設計問題

你好,我是軟體工程專業在校大學生。這個問題,看你的熟練程度了,對於初學者來說,最好是先在紙上畫出流程圖,或者寫出必要的演算法 公式等,然後再在電腦上鍵入 這樣可以有效的防止演算法 混亂,對養成合理的模組劃分習慣和良好的程式設計習慣有很大的幫助。現在紙上把你的大致思想寫下來!比如說主函式是什麼樣的,被...

c語言程式設計問題

1 找一個基點,或者從當前時間裡,讀出今天是星期幾!2 找到2012年1月1日是星期幾。3 迴圈輸出2012年每月的月曆。2012年1月1日是星期日,這個試驗一下,只要計算正確就好 主要是要會計算平年潤年,每個月的天數 陽曆每月的天數,大小月,和平年潤年的關係表 月份 1 2 3,4,5,6,7,8...