日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

對(duì)于編程語(yǔ)言來(lái)說(shuō),經(jīng)常看到有因?yàn)楦髯灾С值恼Z(yǔ)言陣營(yíng)而互懟的,其實(shí)根本沒(méi)那個(gè)必要,都只是一種工具而已。當(dāng)多數(shù)主流語(yǔ)言都會(huì)使用時(shí)也許你就不會(huì)有偏見(jiàn)了,本質(zhì)不過(guò)都是用來(lái)描述計(jì)算機(jī)的一個(gè)任務(wù),只是每門(mén)語(yǔ)言設(shè)計(jì)時(shí)考慮的側(cè)重點(diǎn)不一樣而已。大家最好不要停留在語(yǔ)言層面去爭(zhēng)執(zhí),不如把時(shí)間花在計(jì)算機(jī)實(shí)現(xiàn)原理和結(jié)構(gòu)的本質(zhì)上,這樣更能理解編程語(yǔ)言每一行描述的東西在計(jì)算機(jī)是干什么的。本系列將總結(jié)現(xiàn)在IT領(lǐng)域主流的那些編程語(yǔ)言的相關(guān)知識(shí)。

 

那些主流編程語(yǔ)言的知識(shí),C語(yǔ)言

 

 

關(guān)于C語(yǔ)言

C語(yǔ)言是最經(jīng)典的語(yǔ)言,很多其他語(yǔ)言的運(yùn)行環(huán)境也是用C來(lái)寫(xiě)的,對(duì)于寫(xiě)程序的人則能不懂C語(yǔ)言呢!提到C首先必然會(huì)讓人關(guān)聯(lián)到指針,當(dāng)年在大學(xué)讓你困惑的指針卻是C語(yǔ)言威力無(wú)窮的基礎(chǔ)。C語(yǔ)言可能從更高層面的設(shè)計(jì)和編寫(xiě)效率上有所欠缺,但卻足夠經(jīng)典且容易操控底層。指針雖然風(fēng)險(xiǎn)不小,但卻十分強(qiáng)大。此外ANSI C也增強(qiáng)了C程序在不同操作系統(tǒng)的遷移性,下面列一些C語(yǔ)言的一些基礎(chǔ)知識(shí)。

 

那些主流編程語(yǔ)言的知識(shí),C語(yǔ)言

 

 

翻譯階段

編寫(xiě)好的C程序需要先編譯成可執(zhí)行的機(jī)器指令才能運(yùn)行,這便是翻譯工作。翻譯的主要步驟是編譯和鏈接,編譯就是源代碼到目標(biāo)代碼,而鏈接是將各個(gè)目標(biāo)文件鏈接起來(lái)從而形成一個(gè)可執(zhí)行的程序,當(dāng)然鏈接器也會(huì)引入被程序所用到的所有標(biāo)準(zhǔn)C函數(shù)庫(kù)的函數(shù)。有時(shí)編譯過(guò)程還會(huì)將預(yù)處理作為一個(gè)階段,它主要是對(duì)源文件進(jìn)行一些處理,比如將#define替換成實(shí)際值、將#include指定的文件內(nèi)容填充進(jìn)來(lái)。下面是使用gcc來(lái)編譯并鏈接的例子,經(jīng)過(guò)編譯和鏈接后得到可執(zhí)行程序,這兩個(gè)步驟通過(guò)gcc來(lái)完成,命令為gcc hello.c -o hello,最終運(yùn)行./hello會(huì)輸出“hello world”。

#include<stdio.h>

int main()
{
    printf("hello world");
}

復(fù)制代碼

 

那些主流編程語(yǔ)言的知識(shí),C語(yǔ)言

 

 

假如我們編寫(xiě)了多個(gè)c文件,則編譯器會(huì)分別編譯成多個(gè)obj目標(biāo)文件,然后再通過(guò)鏈接器將所有目標(biāo)文件鏈接起來(lái)生成可執(zhí)行文件。

 

那些主流編程語(yǔ)言的知識(shí),C語(yǔ)言

 

 

關(guān)于擴(kuò)展名

注意windows系統(tǒng)的目標(biāo)文件擴(kuò)展名為obj,一般鏈接完成后也不會(huì)被刪除。而unix-like系統(tǒng)的目標(biāo)文件擴(kuò)展名為o,一般在鏈接完成后會(huì)被刪除。windows系統(tǒng)的可執(zhí)行文件擴(kuò)展名為exe,而unix-like系統(tǒng)的可執(zhí)行文件名可以任意命名。此外,C語(yǔ)言源文件一般后綴為c,而頭文件后綴為h,雖然沒(méi)有強(qiáng)制規(guī)定但大家都會(huì)去遵守這個(gè)約定。

關(guān)于編譯器

翻譯階段需要將C語(yǔ)言代碼變?yōu)榭蓤?zhí)行程序,這些工作由C編譯器完成。C編譯器也有很多,常見(jiàn)的如下:

  • GCC,GCC即(GNU Compiler Collection,GNU編譯器套件),由GNU開(kāi)發(fā)的GPL許可的編譯器自由軟件。剛開(kāi)始只作為C語(yǔ)言編譯器,但后來(lái)發(fā)展成多種語(yǔ)言編譯器,比如C、C++、JAVA、Android、Objective-C和Fortran等等。現(xiàn)在很多unix-like操作系統(tǒng)自帶GCC,將其作為標(biāo)準(zhǔn)編譯器。
  • MS C,與微軟的Visual Studio一起集成發(fā)布,由微軟提供的一套完整的集成開(kāi)發(fā)環(huán)境,編譯后能在微軟的所有操作系統(tǒng)上運(yùn)行。比如VS一般會(huì)使用CL編譯器。
  • Clang,它是一個(gè)基于LLVM的C/C++/Objective-C輕量級(jí)編譯器,常用于mac系統(tǒng)下。
  • Turbo C,這是一個(gè)比較流行的C編譯器,小巧快速。
  • cc,即C Compiler,這是一個(gè)unix系統(tǒng)古老的編譯器,很多經(jīng)典書(shū)籍會(huì)看到這個(gè)編譯器。為保持兼容,現(xiàn)在的linux系統(tǒng)會(huì)將cc作為一個(gè)符號(hào)連接指向gcc,即/usr/bin/cc -> gcc。

gcc編譯例子

以linux系統(tǒng)的gcc為例,看幾個(gè)編譯例子。假如hello.c的代碼如下,

#include<stdio.h>

int main()
{
    printf("hello world");
}
復(fù)制代碼

我們直接使用如下的gcc命令對(duì)其進(jìn)行編譯,而且不帶任何參數(shù),此時(shí)將生成一個(gè)名為out.a的可執(zhí)行文件,通過(guò)./a.out能夠輸出“hello world”。

gcc hello.c
復(fù)制代碼

假如添加name.h/name.c和adder.h/adder.c兩對(duì)頭文件和源文件,而且將hello.c稍作修改,三個(gè)文件代碼分別如下。

//name.h
char* get_name();

//name.c
char* get_name() {
	char* name = "seaboat : ";
	return name;
}
復(fù)制代碼
//adder.h
int add(int a, int b);

//adder.c
int add(int a, int b) {
	return (a + b);
}
復(fù)制代碼
//hello.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include"adder.h"
#include"name.h"
int main()
{
	char* name = get_name();
	char* hello = "hello world";
	char* output = (char*)malloc(strlen(hello) + strlen(name));
	sprintf(output, "%s%s", name, hello);
	printf("%sn", output);
	int a = 1;
	int b = 3;
	printf("a + b = %dn", add(a, b));
}
復(fù)制代碼

則通過(guò)如下的命令可以對(duì)多個(gè)源文件進(jìn)行編譯和鏈接,最終生成一個(gè)名為a.out的可執(zhí)行文件。當(dāng)我們通過(guò)./a.out執(zhí)行可執(zhí)行文件時(shí),它將輸出“seaboat : hello world a + b = 4”。

gcc name.c adder.c hello.c
復(fù)制代碼

我們還可以通過(guò)下面兩個(gè)命令對(duì)name.c和adder.c兩個(gè)文件編譯生成目標(biāo)文件,分別為adder.o和name.o。然后再通過(guò)下面第三行命令來(lái)編譯hello.c源文件,編譯完后它會(huì)自動(dòng)與name.o和adder.o兩個(gè)目標(biāo)文件進(jìn)行連接。

gcc -c adder.c
gcc -c name.c
gcc name.o adder.o hello.c
復(fù)制代碼

此外,還能夠通過(guò)下面的命令來(lái)給多個(gè)源文件進(jìn)行編譯并生成各自對(duì)應(yīng)的目標(biāo)文件,這意味著不對(duì)它們進(jìn)行鏈接。

gcc -c  name.c adder.c hello.c
復(fù)制代碼

對(duì)于多個(gè)目標(biāo)文件,如果要將他們鏈接可以通過(guò)下面的命令,便能夠生成可執(zhí)行文件。

gcc  name.o adder.o hello.o
復(fù)制代碼

如果我們想對(duì)生成的可執(zhí)行文件進(jìn)行命名,那么可以通過(guò)下面第一行命令來(lái)實(shí)現(xiàn),將生成一個(gè)名為hello的可執(zhí)行文件。類(lèi)似地,也可以對(duì)多個(gè)目標(biāo)文件進(jìn)行連接時(shí)指定可執(zhí)行文件名,如下面第二行命令,將生成一個(gè)名為hello2的可執(zhí)行文件。

gcc name.c adder.c hello.c -o hello

gcc  name.o adder.o hello.o -o hello2
復(fù)制代碼

關(guān)于字符集

編寫(xiě)C語(yǔ)言時(shí)源代碼可以包括如下字符集:

  1. 英語(yǔ)大寫(xiě)小寫(xiě)字母
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
復(fù)制代碼
  1. 十進(jìn)制的阿拉伯?dāng)?shù)字
0 1 2 3 4 5 6 7 8 9
復(fù)制代碼
  1. 其它符號(hào)
! " # % & ' () * + , - . / :
; < = > ? [ ]  ^ _ { } | ~
復(fù)制代碼
  1. 空白符
空格、水平制表符、垂直制表符、換行、換頁(yè)
復(fù)制代碼

關(guān)于注釋

C語(yǔ)言提供的注釋方式有兩種:以/*開(kāi)始而以*/結(jié)束來(lái)注釋多行代碼,以//開(kāi)始來(lái)注釋單行代碼。一般來(lái)說(shuō)對(duì)源碼中進(jìn)行注釋則意味著編譯時(shí)會(huì)被預(yù)處理器清除掉,用空格來(lái)替代。

/*
第一種注釋方式
*/

//第二種注釋方式
復(fù)制代碼

關(guān)于標(biāo)識(shí)符與關(guān)鍵詞

標(biāo)識(shí)符就是我們開(kāi)發(fā)人員對(duì)變量、函數(shù)、類(lèi)型、結(jié)構(gòu)體、宏等等的起名,C語(yǔ)言也要求我們要按照它的規(guī)定來(lái)取名。按照規(guī)定,標(biāo)識(shí)符可以由英文大小寫(xiě)字母(A~Z, a~z)、阿拉伯?dāng)?shù)字(0~9)、和下劃線(_)組成。需要注意以下幾點(diǎn):

  • 要求不能以字母開(kāi)頭。
  • C語(yǔ)言對(duì)大小寫(xiě)字母敏感。
  • C語(yǔ)言不會(huì)對(duì)標(biāo)識(shí)符的長(zhǎng)度進(jìn)行限制,但標(biāo)準(zhǔn)允許編譯器忽略第31位以后的字符,具體截取前多少位則由不同的編譯器來(lái)實(shí)現(xiàn),當(dāng)截取的字符串相同時(shí)則認(rèn)為是同一個(gè)標(biāo)識(shí)符。
  • 標(biāo)識(shí)符不應(yīng)該亂取名,盡量要讓標(biāo)識(shí)符名字具有相應(yīng)的意義。

當(dāng)然C語(yǔ)言還保留了32個(gè)特殊的關(guān)鍵詞,我們命名的標(biāo)識(shí)符不能與它們相同,否則就會(huì)報(bào)錯(cuò)。這32個(gè)關(guān)鍵詞如下:

 

那些主流編程語(yǔ)言的知識(shí),C語(yǔ)言

 

 

那些主流編程語(yǔ)言的知識(shí),C語(yǔ)言

 

分享到:
標(biāo)簽:語(yǔ)言
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定