c語言標準指令,c語言 指令

本文目錄一覽:

C語言的全部命令??

你是說關鍵字吧!

由ANSI標準定義的C語言關鍵字共32個 :

auto double int struct break else long switch

case enum register typedef char extern return union

const float short unsigned continue for signed void

default goto sizeof volatile do if while static

根據關鍵字的作用,可以將關鍵字分為數據類型關鍵字和流程控制關鍵字兩大類。

1 數據類型關鍵字

A基本數據類型(5個)

void :聲明函數無返回值或無參數,聲明無類型指針,顯式丟棄運算結果

char :字符型類型數據,屬於整型數據的一種

int :整型數據,通常為編譯器指定的機器字長

float :單精度浮點型數據,屬於浮點數據的一種

double :雙精度浮點型數據,屬於浮點數據的一種

B 類型修飾關鍵字(4個)

short :修飾int,短整型數據,可省略被修飾的int。

long :修飾int,長整形數據,可省略被修飾的int。

signed :修飾整型數據,有符號數據類型

unsigned :修飾整型數據,無符號數據類型

C 複雜類型關鍵字(5個)

struct :結構體聲明

union :共用體聲明

enum :枚舉聲明

typedef :聲明類型別名

sizeof :得到特定類型或特定類型變量的大小

D 存儲級別關鍵字(6個)

auto :指定為自動變量,由編譯器自動分配及釋放。通常在棧上分配

static :指定為靜態變量,分配在靜態變量區,修飾函數時,指定函數作用域為文件內部

register :指定為寄存器變量,建議編譯器將變量存儲到寄存器中使用,也可以修飾函數形參,建議編譯器通過寄存器而不是堆棧傳遞參數

extern :指定對應變量為外部變量,即在另外的目標文件中定義,可以認為是約定由另外文件聲明的韻蟮囊桓觥耙�謾?

const :與volatile合稱“cv特性”,指定變量不可被當前線程/進程改變(但有可能被系統或其他線程/進程改變)

volatile :與const合稱“cv特性”,指定變量的值有可能會被系統或其他進程/線程改變,強制編譯器每次從內存中取得該變量的值

2 流程控制關鍵字

A 跳轉結構(4個)

return :用在函數體中,返回特定值(或者是void值,即不返回值)

continue :結束當前循環,開始下一輪循環

break :跳出當前循環或switch結構

goto :無條件跳轉語句

B 分支結構(5個)

if :條件語句

else :條件語句否定分支(與if連用)

switch :開關語句(多重分支語句)

case :開關語句中的分支標記

default :開關語句中的“其他”分治,可選。

C 循環結構(3個)

for :for循環結構,for(1;2;3)4;的執行順序為1-2-4-3-2…循環,其中2為循環條件

do :do循環結構,do 1 while(2); 的執行順序是 1-2-1…循環,2為循環條件

while :while循環結構,while(1) 2; 的執行順序是1-2-1…循環,1為循環條件

以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。

c語言指令有哪些啊

第一章:緒論?

內核版本號格式:x.y.zz-www/x為主版本號,y為次版本號,zz為次次版本號,www為發行號/次版本號改變說明內核有重大變革,其偶數為穩定版本,奇數為尚在開發中的版本

第二章:基礎?

文件種類:-:txt,二進制/d:目錄/l:鏈接文件(link)/b:區塊設備文件/c:字符設備文件/p:管道

目錄結構:bin:可執行/boot:開機引導/dev:設備文件/etc:系統配置文件/lib:庫文件/mnt:設備掛載點/var:系統日誌/

命令:rmdir:刪除空目錄/find [path] [expression]/touch命令還可以修改指定文件的最近一次訪問時間/tar -czvf usr.tar.gz path/tar –zxvf usr.tar.gz/tar –cjvf usr.tar.bz2 path/tar –jxvf usr.tar.bz2

gcc:預處理:-g/I在頭文件搜索路徑中添加目錄,L在庫文件搜索路徑中

gdb:設置斷點:b/查看斷點信息:info

Makefile:make –f other_makefile/:第一個依賴文件的名稱/@:目標文件的完整名稱/^:所有不重複的依賴文件/+:所有依賴文件(可能重複)

第三章:文件IO

read:read(fd, temp, size); /讀fd中長度為size的值到temp/返回0表示file為NULL

write:write(fd, buf, buf_size); /寫長度為buf_size的buf內容到fd中

lseek:lseek(fd, offset, SEEK_SET); /從文件開頭向後增加offset個位移量

unlink:從文件系統中刪除一個名字

open1:int open(const char * pathname, int flags, mode_t mode);/flags為讀寫方式/mode為權限設置/O_EXCL:測試文件是否存在/O_TRUNC:若存在同名文件則刪除之並新建

open2:注意O_NONBLOCK

mmap.1:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize);

mmap.2:mmap(start_addr, flength, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);

fcntl:上鎖/int fcntl(int fd, int cmd, struct flock * lock);/對誰;做什麼;設置所做內容

select:fd_max+1,回傳讀狀況,回傳寫狀況,回傳異常,select等待的時間/NULL為永遠等待/0為從不等待/凡需某狀況則用之,反則(fd_set *)NULL之

FD_*那幾個函數……

一般出錯則返回-1

第四章:文件與目錄

硬鏈接與符號鏈接?

chdir改變目錄

0:in/1:out/2:err

第五章:內存管理

可執行文件存儲時:代碼區、數據區和未初始化區

棧:by編譯器,向低址擴展,連續,效率高/堆:by程序員

/etc/syslog.conf,系統log記錄文件/優先級為-20時最高

第六章:進程和信號

程序代碼、數據、變量、文件描述符和環境/init的pid為1

execl族:int execl(const char * path, const char * arg, ….);/path即可執行文件的路徑,一般為./最後一個參數以NULL結束

waitpid:waitpid(pid_t pid,int * status,int options);/option:一般用WNOHANG,沒有已經結束的子進程則馬上返回,不等待

kill:int kill(pid_t pid,int sig);/發送信號sig給pid

void (*signal(int signum, void(* handler)(int)))(int);/第一個參數被滿足時,執行handler/第一個參數常用:SIG_IGN:忽略信號/SIG_DFL:恢復默認信號

第七章:線程

sem_init(sem_t *sem, int pshared, unsigned int value)/pshared為0/value即初始值

第八章:管道

1:write/0:read

第九章:信號量、共享內存和消息隊列

臨界資源:操作系統中只允許一個進程訪問的資源/臨界區:訪問臨界資源的那段代碼

信號量:建立聯繫(semget),然後初始化,PV操作,最後destroy

共享內存沒有提供同步機制

第十章:套接字

UDP:無連接協議,無主客端的區分/實時性

TCP:字節流/數據可靠性/網絡可靠性

數據報:SOCK_STREAM/SOCK_DGRAM

其它

管道一章的both_pipe即父子進程間的全雙工管道通訊

關係到信號和互斥的服務器-客戶端程序

線程一章的class的multi_thread文件夾下的thread8.c

int main(void)

{

int data_processed;

int file_pipes_1[2];

int file_pipes_2[2];

char buffer[BUFSIZ + 1];

const char some_data[] = “123”;

const char ch2p[] = “this is the string from child to the parent!”;

const char p2ch[] = “this is the string from parent to the child!”;

pid_t fork_result;

memset(buffer,’\0′,sizeof(buffer));

if(pipe(file_pipes_1) == 0){

if(pipe(file_pipes_2) == 0){

fork_result = fork();

switch(fork_result){

case -1:

perror(“fork error”);

exit(EXIT_FAILURE);

case 0://child

close(file_pipes_1[1]);

close(file_pipes_2[0]);

printf(“in the child!\n”);

read(file_pipes_1[0],buffer, BUFSIZ);

printf(“in the child, read_result is \”%s\”\n”,buffer);

write(file_pipes_2[1],ch2p, sizeof(ch2p));

printf(“in the child, write_result is \”%s\”\n”,ch2p);

exit(EXIT_SUCCESS);

default://parent

close(file_pipes_1[0]);

close(file_pipes_2[1]);

printf(“in the parent!\n”);

write(file_pipes_1[1], p2ch, sizeof(p2ch));

printf(“in the parent, write_result is \”%s\”\n”,p2ch);

read(file_pipes_2[0],buffer, BUFSIZ);

printf(“in the parent, read_result is \”%s\”\n”,buffer);

exit(EXIT_SUCCESS);

}

}

}

}

#ifndef DBG

#define DBG

#endif

#undef DBG

#ifdef DBG

#define PRINTF(fmt, args…) printf(“file-%s line-%d: ” \

fmt, __FILE__, __LINE__, ##args)

#else

#define PRINTF(fmt, args…) do{}while(0);

#endif

int main(void)

{

PRINTF(“%s\n”, “hello!”);

fprintf(stdout, “hello hust!\n”);

return 0;

}

#define N 5

#define MAX 5

int nput = 0;

char buf[MAX][50];

char *buffer = “abcdefghijklmnopqrstuvwxyz0123456789”;

char buf_r[100];

sem_t mutex,full,avail;

void *productor(void *arg);

void *consumer(void *arg);

int i = 0;

int main(int argc, char **argv)

{

int cnt = -1;

int ret;

int nput = 0;

pthread_t id_produce[10];

pthread_t id_consume;

ret = sem_init(mutex, 0, 1);

ret = sem_init(avail, 0, N);

ret = sem_init(full, 0, 0);

for(cnt = 0; cnt 6; cnt ++ ){

//pthread_create(id_produce[cnt], NULL, (void *)productor, cnt);

pthread_create(id_produce[cnt], NULL, (void *)productor, (void *)cnt);

}

pthread_create(id_consume, NULL, (void *)consumer, NULL);

for(cnt = 0; cnt 6; cnt ++){

pthread_join(id_produce[cnt], NULL);

}

pthread_join(id_consume,NULL);

sem_destroy(mutex);

sem_destroy(avail);

sem_destroy(full);

exit(EXIT_SUCCESS);

}

void *productor(void *arg)

{

while(1){

sem_wait(avail);

sem_wait(mutex);

if(nput = MAX * 3){

sem_post(avail);

//sem_post(full);

sem_post(mutex);

return NULL;

}

sscanf(buffer + nput, “%s”, buf[nput % MAX]);

//printf(“write[%d] \”%s\” to the buffer[%d]\n”, (*(int*)arg), buf[nput % MAX],nput % MAX);

printf(“write[%d] \”%s\” to the buffer[%d]\n”, (int)arg, buf[nput % MAX],nput % MAX);

nput ++;

printf(“nput = %d\n”, nput);

sem_post(mutex);

sem_post(full);

}

return NULL;

}

void *consumer(void *arg)

{

int nolock = 0;

int ret, nread, i;

for(i = 0; i MAX * 3; i++)

{

sem_wait(full);

sem_wait(mutex);

memset(buf_r, 0, sizeof(buf_r));

strncpy(buf_r, buf[i % MAX], sizeof(buf[i % MAX]));

printf(“read \”%s\” from the buffer[%d]\n\n”,buf_r, i % MAX);

sem_post(mutex);

sem_post(avail);

//sleep(1);

}

return NULL;

}

C語言中的指令*p++、(*p)++、*++p和++*p分別有什麼不同?

*(p++) 取(p+1)處地址的值。

*(++p) 取(p+1)處地址的值。和上面一樣。

*++p 取(p+1)處地址的值。和上面一樣。

*p++ 唯一不同的一個,先取p地址處的值,再對p執行+1。

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

儘管C語言提供了許多低級處理的功能,但仍然保持着良好跨平台的特性,以一個標準規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

特點:

1、C語言是一個有結構化程序設計、具有變量作用域以及遞歸功能的過程式語言。

2、C語言傳遞參數均是以值傳遞,另外也可以傳遞指針。

3、不同的變量類型可以用結構體組合在一起。

4、只有32個保留字,使變量、函數命名有更多彈性。

5、部份的變量類型可以轉換,例如整型和字符型變量。

6、通過指針,C語言可以容易的對存儲器進行低級控制。

7、預編譯處理讓C語言的編譯更具有彈性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/227458.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 16:30
下一篇 2024-12-09 16:30

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論