程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 自問自答學習c語言(1)

自問自答學習c語言(1)

編輯:關於C語言

整理學習過程和文檔,每個blog10個問題。
問題1: 為什麼分低級語言,高級語言之分。

 機器指令: 00000010 machine instruction

機器語言: 00000010 00001010 指令的集合;型號不同的機器,機器語言不同

進化為-》

符號語言:ADD A,B   symbolic language,需要軟件把這些符號轉化為機器語言,這個過程叫匯編assemble, 因此符號語言也叫assemble language.貼近計算機,型號不同的機器,匯編語言不同,又叫低級語言。只限專業人士使用。

再進化為-》》

高級語言: 不依賴於具體機器,並且符合人類的語言習慣。 比如打印 printf("................");同樣需要翻譯為機器語言,叫compile.高級語言的一句往往對應多條機器指令。

問題2:高級語言的主要分類。

主要分面向對象和面向過程的。c為面向過程的,c++為面向對象的。

問題3:c語言簡要歷史

1973貝爾實驗室發明c,並改寫unix. 1983出了個標准, 1989出了個標准,1999出了個標准。

問題4: 為什麼加#include <stdio.h>

c語言不提供輸入輸出語句,內存操作語句等,這些都是由編譯系統所提供的庫函數實現的

#include <stdio.h> 此句表示從存放c編譯系統的子目錄中查找stdio.h文件,並包含,從而可以調用相應的輸入輸出語句。

問題5:c語言為什麼經常用來編寫系統軟件。

能實現匯編的大部分功能,可直接訪問物理地址。

問題6: 最簡的main函數以及為什麼這樣寫?

int main()

{

   return 0;

}
int 為c99建議加上的; 設計時肯定會這樣設計, 返回0表示成功,成功只有一樣,返回非0表示失敗,失敗的原因可以有很多比如返回1,返回-1,返回2,是這種設計思想。

 

問題7 為什麼對函數聲明?

直接編譯下面的代碼會報c3861錯誤 identifier not found

法1 把聲明去掉注釋;法2 把定義提前;

同樣道理,

#include <stdio.h>
int main()
{
    printf("Please input two numbers, seperated by space \n");
    int a,b;
    // int myMax(int num1,int num2);//
    scanf("%d %d",&a,&b);
    int c = myMax(a,b);
    printf("the max number between %d and %d is %d",a,b,c);
    return 0;
}
int myMax(int num1, int num2)
{
    int maxNum;
    maxNum = num1>=num2?num1:num2;
    return maxNum;
}

問題8 為什麼有鏈接這一步?
.c源文件編譯生成二進制.obj文件,但是不能執行,不同的.c文件生成自己的.obj,顯然需要link所有的obj文件成為一個exe文件; 即使一個源文件也需要和編譯系統的函數庫鏈接。

問題9 有哪些常量?
(1)想到最簡單的常量就是數字了; 如 1, 55, 50.2, 78.34e4, 43.22E3
(2)字符常量: 普通字符'1', 'a', '4','\n' 注意只是一個形狀像數字4的圖像字符,其表示方法為ASCII碼,沒有字符'44'.  '\033' or '\x1B'代表ASCII碼為27的字符,即ESC控制符。
(3)字符串常量: “hello world”
(4) #define PI 3.1415926

問題10 #define PI 3.1415926與const double PI = 3.1415926;區別?
一個是變量,一個是符號常量;一個占內存,一個不占內存;一個有類型,一個沒有類型,一個一直存在,一個預編譯後符號被替代。

摘自:drbinzhao的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved