一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于C語(yǔ)言進(jìn)階的操作

Q4MP_gh_c472c21 ? 來(lái)源:嵌入式ARM ? 作者:嵌入式ARM ? 2020-10-10 11:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、操作一波 咱們先體驗(yàn)一波#include“xxx.c”文件能不能用:

參考demo:

1//FileName :main 2#include 《stdio.h》 3#include 《stdlib.h》 4 5/*************************** 6 * .c文件聲明區(qū)域 7 **************************/ 8#include“module1.c” 9#include“module2.c” 10 11/*************************** 12 * Fuction: main 13 * Author :(最后一個(gè)bug) 14 **************************/ 15int main(int argc, char *argv[]) { 16 17 Fuction1(); 18 Fuction2(); 19 printf(“歡迎關(guān)注公眾號(hào):最后一個(gè)bug ”); 20 return 0; 21}

1//FileName: Module1.c 2#include《stdio.h》 3/*************************** 4 * Fuction: Fuction1 5 * Author :(最后一個(gè)bug) 6 **************************/ 7void Fuction1() 8{ 9 printf(“Run Fuction1 ”); 10}

1//FileName: Module2.c 2#include《stdio.h》 3/*************************** 4 * Fuction: Fuction2 5 * Author :(最后一個(gè)bug) 6 **************************/ 7void Fuction2() 8{ 9 printf(“Run Fuction2 ”); 10}

輸出結(jié)果:

分析一下:

看來(lái)這波操作可行,似乎還省去了.h文件,之前bug菌說(shuō)過(guò),分析.h文件的時(shí)候直接把.h文件在對(duì)應(yīng)的.c文件中的位置處展開然后進(jìn)一步分析即可,其實(shí)這.c文件也是如此,接著往下看。

參考demo:

1//FileName :main 2#include 《stdio.h》 3#include 《stdlib.h》 4 5char * cBug1 = “bugNo1”; //這里是位置1 6char * cBug2 = “bugNo2”; 7/*************************** 8 * .c文件聲明區(qū)域 9 **************************/ 10#include“module1.c” 11#include“module2.c” 12 13//char * cBug1 = “bugNo1”;//這里是位置2 14//char * cBug2 = “bugNo2”; 15 16/*************************** 17 * Fuction: main 18 * Author :(最后一個(gè)bug) 19 **************************/ 20int main(int argc, char *argv[]) { 21 22 Fuction1(); 23 Fuction2(); 24 printf(“歡迎關(guān)注公眾號(hào):最后一個(gè)bug ”); 25 return 0; 26}

1//FileName: Module2.c 2#include《stdio.h》 3/*************************** 4 * Fuction: Fuction1 5 * Author :(最后一個(gè)bug) 6 **************************/ 7void Fuction1() 8{ 9 printf(“Run Fuction1 ”); 10 printf(“%s ”,cBug1); 11}

1//FileName: Module2.c 2#include《stdio.h》 3/*************************** 4 * Fuction: Fuction2 5 * Author :(最后一個(gè)bug) 6 **************************/ 7void Fuction2() 8{ 9 printf(“Run Fuction2 ”); 10 printf(“%s ”,cBug2); 11}

輸出結(jié)果:

分析一下:

我們?cè)谖恢?進(jìn)行兩個(gè)變量的定義,成功編譯運(yùn)行得到如上的結(jié)果,符合我們的預(yù)期,然而當(dāng)我們?nèi)サ粑恢?進(jìn)行位置2的定義,程序卻無(wú)法進(jìn)行編譯,看來(lái)跟我們預(yù)期在編譯過(guò)程中直接展開.c文件是一致的。

2、有什么用? 這種方式在bug菌的編碼歷史長(zhǎng)河中一般只在兩種情況下用到:

1、維護(hù)毫無(wú)設(shè)計(jì)的代碼

有些歷史悠久的項(xiàng)目經(jīng)過(guò)了N多位大佬的蹂躪,說(shuō)實(shí)在的代碼結(jié)構(gòu)上已經(jīng)非??膳铝?,往往每個(gè)源文件內(nèi)容非常之長(zhǎng),為了保持代碼原樣,會(huì)采用#include“xxx.c”把這幾的相關(guān)文件嵌入進(jìn)去,也便于自己后期維護(hù)。

2、測(cè)試代碼

在前期進(jìn)行軟件調(diào)試的時(shí)候可能自己會(huì)在不同的文件中安插不同測(cè)試功能函數(shù),通過(guò)這樣方法可以方便的引入和剔除。

比如說(shuō)你需要對(duì)源文件中的一些靜態(tài)變量進(jìn)行相關(guān)的監(jiān)控處理,然而又不想在本文件中增加測(cè)試代碼,于是便可以在#include“xxx.c”中進(jìn)行測(cè)試函數(shù)的編寫來(lái)供使用,比如 :

1//FileName :main 2#include 《stdio.h》 3#include 《stdlib.h》 4 5static int a = 5; 6/*************************** 7 * .c文件聲明區(qū)域 8 **************************/ 9#include“module1.c” 10 11/*************************** 12 * Fuction: main 13 * Author :(最后一個(gè)bug) 14 **************************/ 15int main(int argc, char *argv[]) { 16 17 Fuction1(); 18 printf(“main %d ”,a); 19 printf(“歡迎關(guān)注公眾號(hào):最后一個(gè)bug ”); 20 return 0; 21}

1//FileName: Module2.c 2#include《stdio.h》 3/*************************** 4 * Fuction: Fuction1 5 * Author :(最后一個(gè)bug) 6 **************************/ 7void Fuction1() 8{ 9 printf(“Run Fuction1 ”); 10 printf(“Fuction1 %d ”,a); 11}

注意了??!

那么之前有小伙伴說(shuō) : “ static的作用域僅僅在對(duì)應(yīng)的文件中 ”,通過(guò)上面的多個(gè).c文件使用靜態(tài)a變量,那么這位小伙伴表述就不那么貼切了! 3、技術(shù)總結(jié) 大家在正常的開發(fā)過(guò)程中bug菌還是不建議使用#include“xxx.c”,因?yàn)樵谖覀兂绦虻脑O(shè)計(jì)過(guò)程中,.h文件就是一種外部的引用接口,而.c是對(duì)應(yīng)的內(nèi)部實(shí)現(xiàn),如果濫用#include“xxx.c”有可能造成函數(shù)等等的重復(fù)定義,同時(shí)也對(duì)調(diào)試相關(guān)程序帶來(lái)一些困擾,當(dāng)然如果游刃有余就沒啥問(wèn)題的啦。 不過(guò)對(duì)于喜歡寫長(zhǎng)文件的小伙伴來(lái)說(shuō)卻是是福音,把一個(gè)長(zhǎng)的.c文件分成多個(gè).c文件,這樣至少可以把不知道這種用法的同事面前秀一秀!

void

1、簡(jiǎn)單認(rèn)識(shí)一下void void在大部分小伙伴的程序中都只是用于函數(shù)無(wú)參數(shù)傳入,或者無(wú)類型返回。然而我們平時(shí)所定義的變量都會(huì)有具體的類型,int,float,char等等,那是否有void類型的變量呢?大家可以動(dòng)手實(shí)驗(yàn)一下,答案是:不行,編譯會(huì)出錯(cuò)。

上圖很明顯編譯器不允許定義void類型的變量,變量都是需要占用一定內(nèi)存的,既然void表示無(wú)類型,編譯器自然也就不知道該為其分配多大的內(nèi)存,于是造成編譯失敗。 雖然void不能直接修飾變量,但是其可以用于修飾指針的指向即無(wú)類型指針void*,無(wú)類型指針那就有意義了,無(wú)類型指針不是一定要指向無(wú)類型數(shù)據(jù),而是可以指向任意類型的數(shù)據(jù)。 2、void * 基本操作 大家其實(shí)在使用動(dòng)態(tài)內(nèi)存分配的使用就已經(jīng)遇到了void *的使用,來(lái)我們一起看看如下幾個(gè)標(biāo)準(zhǔn)函數(shù)的原型定義:

上面這些函數(shù)都是與內(nèi)存操作有關(guān)的函數(shù),可能一些小伙伴使用過(guò)也不一定知道每個(gè)參數(shù)的具體類型是什么,這些void*部分的形參所傳入的實(shí)參都是不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)化的,所以根本就不需要關(guān)注傳入指針?biāo)赶虻木唧w類型,然而函數(shù)所返回的void *一般都需要通過(guò)強(qiáng)制類型轉(zhuǎn)化為對(duì)應(yīng)的具體類型,除非你最后所傳遞的變量也是void*類型。

參考void*用法:

1#include 《stdio.h》 2#include 《stdlib.h》 3#include 《malloc.h》 4 5#define NUM 10 6/************************************* 7 * Fuction:了解一下void*的使用 8 * Author : (最后一個(gè)bug) 9 *************************************/ 10int main(int argc, char *argv[]) { 11 int *p1 = (int *)malloc(NUM*sizeof(int)); 12 int *p2 = (int *)malloc(NUM*sizeof(int)); 13 int i = 0; 14 15 //初始化p1 16 for(i = 0;i 《 NUM;i++) 17 { 18 *(p1+i) = i; 19 } 20 //進(jìn)行內(nèi)存copy 21 memcpy(p2,p1,NUM*sizeof(int)); 22 23 //輸出另外一個(gè)分配的內(nèi)存 24 for(i = 0;i 《 NUM;i++) 25 { 26 printf(“%d,”,*(p2+i)); 27 } 28 //釋放內(nèi)存 29 free(p1); 30 free(p2); 31 return 0; 32}

運(yùn)行結(jié)果:

3、使用void * 實(shí)現(xiàn)無(wú)類型數(shù)據(jù)封裝 為了保持文章的完整性,也許這里才是作者最想跟大家介紹的,void*既然如此的靈活一定大有用處,如果僅僅只是用來(lái)簡(jiǎn)單的傳遞參數(shù)似乎有點(diǎn)大材小用,我們得把其用到上層的軟件設(shè)計(jì)上來(lái)。 在一些項(xiàng)目中經(jīng)??吹接行』锇榘褦?shù)據(jù)類型轉(zhuǎn)來(lái)轉(zhuǎn)去,甚至有時(shí)候?yàn)榱艘粋€(gè)數(shù)據(jù)類型的變化還得重新寫一個(gè)僅僅數(shù)據(jù)類型不同的函數(shù),這樣的代碼上萬(wàn)行代碼指日可待,按下面我們以一個(gè)例子來(lái)跟大家介紹一種辦法能夠減少數(shù)據(jù)類型變化所帶來(lái)的程序重復(fù)代碼的增加。

參考實(shí)例:

1#include 《stdio.h》 2#include 《stdlib.h》 3/********************************** 4 * Fuction : add 5 * descir : 加法的相關(guān)數(shù)據(jù)及處理辦法 6 * Author : (最后一個(gè)bug) 7 **********************************/ 8typedef struct _tag_Add 9{ 10 int a; 11 int b; 12 int result; 13}sAdd; 14 15void Add(void *param) 16{ 17 sAdd *p = (sAdd *) param; 18 p-》result = p-》a + p-》b; 19} 20/********************************** 21 * Fuction : add 22 * descir : 乘法的相關(guān)數(shù)據(jù)及處理辦法 23 * Author : (最后一個(gè)bug) 24 **********************************/ 25typedef struct _tag_Mul 26{ 27 float a; 28 float b; 29 float result; 30}sMul; 31 32void Mul(void *param) 33{ 34 sMul *p = (sMul *) param; 35 p-》result = p-》a * p-》b; 36} 37 38/************************************* 39 * Fuction : sCal 40 * descir : 公共的調(diào)用接口 41 * Author : (最后一個(gè)bug) 42 ************************************/ 43void sCal(void *param,void *fuc) 44{ 45 ((void (*)(void*))fuc)(param); 46} 47 48/********************************** 49 * Fuction : main 50 * descir : 應(yīng)用接口實(shí)例 51 * Author : (最后一個(gè)bug) 52 **********************************/ 53int main(void) 54{ 55 sAdd stAdd; 56 sMul stMul; 57 58 //數(shù)據(jù)初始化 59 stAdd.a = 10; 60 stAdd.b = 20; 61 62 stMul.a = 5; 63 stMul.b = 5; 64 //接口直接用 65 sCal(&stAdd,Add); 66 sCal(&stMul,Mul); 67 //對(duì)應(yīng)的輸出 68 printf(“a + b = %d ”,stAdd.result); 69 printf(“a * b = %f ”,stMul.result); 70 printf(“公眾號(hào):最后一個(gè)bug ”); 71 return 0; 72 }

運(yùn)行結(jié)果:

分析一下:

上面的例子可能還是無(wú)法完全彰顯void*的強(qiáng)悍之處了,不過(guò)其主要的作用就是為了隱藏?cái)?shù)據(jù)類型,大家也可以理解為一種數(shù)據(jù)類型的抽象處理,這也是面向?qū)ο?a href="http://www.www27dydycom.cn/v/tag/1315/" target="_blank">編程的一種體現(xiàn)。 4、技術(shù)總結(jié) 大家一定要記得對(duì)于一些編程技巧一定要嘗試著去使用,可能達(dá)到項(xiàng)目目標(biāo)的方式有很多種,但是一些好的設(shè)計(jì)不僅僅會(huì)讓你的代碼增色不少,同時(shí)也會(huì)讓同事們覺得你是一個(gè)喜歡專研技術(shù)的人。

“ 逗號(hào)表達(dá)式 ”

1、先來(lái)一個(gè)逗號(hào)表達(dá)式例子

一個(gè)逗號(hào)表達(dá)式的實(shí)例:

1#include 《stdio.h》 2#include 《stdlib.h》 3/****************************************** 4 * Fuction: Main 5 * Descir : 測(cè)試一個(gè)逗號(hào)表達(dá)式 6 * Author :(最后一個(gè)bug) 7 *****************************************/ 8int main(int argc, char *argv[]) { 9 int Val = 1; 10 11 Val = ++Val,Val+10,Val*10; //逗號(hào)表達(dá)式 12 13 printf(“Val = %d”,Val); 14 15 return 0; 16}

分析一下:

大家首先可以自己算一下最后輸出的結(jié)果,然后再去看下面的答案,其實(shí)對(duì)于逗號(hào)表達(dá)式的語(yǔ)法規(guī)則并不是很難,主要是大家在平時(shí)的開發(fā)中使用得比較少,一旦經(jīng)常不使用就容易淡忘。

逗號(hào)表達(dá)式的形式 : 表達(dá)式1,表達(dá)式2,。..。..,表達(dá)式n

三點(diǎn)搞定:

逗號(hào)表達(dá)式從表達(dá)式1開始順序從左向右執(zhí)行;

其逗號(hào)表達(dá)式最后的值為最后一個(gè)表達(dá)式的值;

逗號(hào)運(yùn)算的優(yōu)先級(jí)最低,也就說(shuō)明與其他運(yùn)算符結(jié)合使用的時(shí)候,在沒有括號(hào)的情況下逗號(hào)運(yùn)算符最后才執(zhí)行。

上面例子的結(jié)果:

可能有部分小伙伴算出的結(jié)果是10,主要是沒有考慮其逗號(hào)表達(dá)式優(yōu)先級(jí)最低,所以第一賦值表達(dá)式優(yōu)先執(zhí)行。 2、“不怎么用”是不是就“沒有用”? 既然大家平時(shí)都用得不多,是不是這個(gè)逗號(hào)表達(dá)式就是多此一舉呢 ? C發(fā)展這么多年,如果真的沒有價(jià)值估計(jì)早就不存在了吧,所以還是要秉承著“存在即是合理”的態(tài)度看待逗號(hào)表達(dá)式。

大家在平時(shí)閱讀代碼的時(shí)候應(yīng)該都是按照從左至右,然后從上至下來(lái)的方式吧?;旧弦粋€(gè)分號(hào)結(jié)束一行的書寫,由于電腦屏幕的限制,有效代碼暴露在人的視野中是有限的,同時(shí)人瞬間記憶時(shí)間也是有限的,如果在一個(gè)小小的屏幕上閱碼勢(shì)必會(huì)阻礙程序員的閱讀和理解,比如下面兩種書寫方式:

1/****************************************** 2 * Fuction: 非逗號(hào)表達(dá)式書寫 3 * Descir : 4 * Author :(最后一個(gè)bug) 5 *****************************************/ 6if(IsOk()) 7{ 8 sOkProc(); 9 return GetOkCode(); 10} 11else 12{ 13 sNoProc(); 14 return GetNoCode(); 15} 16/****************************************** 17 * Fuction: 采用逗號(hào)表達(dá)式書寫 18 * Descir : 19 * Author :(最后一個(gè)bug) 20 *****************************************/ 21return (IsOk())?(sOkProc(),GetOkCode()):(sNoProc(),GetNoCode());

分析一下:

上面是兩種代碼書寫方式,第一種占據(jù)了多行,而第二種進(jìn)占據(jù)一行,這樣同樣一個(gè)屏幕所容納的有效代碼第一種就明顯少于第二種方式,所以很多程序員都會(huì)選擇使用一種大長(zhǎng)屏或者多屏進(jìn)行開發(fā)。

第二種方式似乎很多小伙伴覺得代碼不夠美觀,也不便于維護(hù),其實(shí)這僅僅只是一種習(xí)慣罷了,就好像編碼的時(shí)候 : 第一個(gè)大括號(hào)是否需要另外起一行,或者是使用==號(hào)一定要像if( 1== b)這樣把數(shù)據(jù)放左邊,當(dāng)你習(xí)慣了這種編碼風(fēng)格也會(huì)覺得用第二方式來(lái)得直接。

3、逗號(hào)表達(dá)式常用的地方

下面為大家介紹幾個(gè)用逗號(hào)表示式比較多的地方:

1、for循環(huán)中的處理

參考demo:

1#include 《stdio.h》 2#include 《stdlib.h》 3#define ROW_NUM (5) 4#define LINE_NUM (5) 5/****************************************** 6 * Fuction: Main 7 * Descir :for 遍歷查找 8 * Author :(最后一個(gè)bug) 9 *****************************************/ 10int main(int argc, char *argv[]) { 11 int i = 0,j = 0; 12 int Matrix[ROW_NUM][LINE_NUM] ={{1,1,1,1,1}, 13 {2,2,2,2,2}, 14 {3,3,3,3,3}, 15 {4,4,4,4,4}, 16 {5,5,5,5,5}, 17 }; 18 19 for(i = 0,j = 0;(i 《 ROW_NUM)&&(j 《 LINE_NUM);i++,j += 2) 20 { 21 printf(“Matrix[%d][%d] = %d ”,i,j,Matrix[i][j]); 22 } 23 printf(“公眾號(hào):最后一個(gè)bug ”); 24 return 0; 25}

分析一下:

上面在for循環(huán)中遍歷相關(guān)數(shù)據(jù)幾比較常規(guī)的處理,也是逗號(hào)表達(dá)式經(jīng)常出現(xiàn)的地方,這樣的表現(xiàn)形式讓代碼更加簡(jiǎn)單明了。

其結(jié)果如下:

2、弱化++處理大家應(yīng)該都知道++在前先執(zhí)行自加,然后再進(jìn)行相應(yīng)處理,而++在后則相反,那么我們可以使用逗號(hào)運(yùn)算符優(yōu)先級(jí)最低的特點(diǎn)來(lái)弱化該問(wèn)題,避免編碼出現(xiàn)bug。

參考Demo

1#include 《stdio.h》 2#include 《stdlib.h》 3/****************************************** 4 * Fuction: Main 5 * Descir :弱化++前后問(wèn)題 6 * Author :(最后一個(gè)bug) 7 *****************************************/ 8int main(int argc, char *argv[]) { 9 int i = 0; 10 11 //1、常規(guī)操作 12 i = 0; 13 while(++i 《 3) 14 { 15 printf(“ i = %d ”,i); 16 } 17 printf(“***************** ”); 18 19 i = 0; 20 while(i++ 《 3) 21 { 22 printf(“ i = %d ”,i); 23 } 24 printf(“*****************n”); 25 26 //2、逗號(hào)表達(dá)式處理一下 27 i = 0; 28 while( i++,i 《 3) 29 { 30 printf(“ i = %d ”,i); 31 } 32 printf(“*****************n”); 33 34 i = 0; 35 while( ++i,i 《 3) 36 { 37 printf(“ i = %d ”,i); 38 } 39 printf(“*****************n”); 40 41 printf(“公眾號(hào):最后一個(gè)bugn”); 42 return 0; 43} 44

分析一下:

當(dāng)使用逗號(hào)表達(dá)式以后,不管++在前還是在后,其都會(huì)自增加1,然后再進(jìn)行右邊表達(dá)式的處理,這樣就不用擔(dān)心是不是多記了一次,導(dǎo)致各種問(wèn)題。

運(yùn)行結(jié)果:

3、更加精簡(jiǎn)宏定義

參考demo

1#include 《stdio.h》 2#include 《stdlib.h》 3 4#define GET_INDEX(a ,b) ( a+= 2,a + b) 5/****************************************** 6 * Fuction: Main 7 * Descir : 簡(jiǎn)化宏 8 * Author :(最后一個(gè)bug) 9 *****************************************/ 10int main(int argc, char *argv[]) { 11 int i = 0,Val = 0; 12 int Param1 = 0, Param2 = 0; 13 int Matrix[5] ={5,5,5,5,5}; 14 15 printf(“ Matrix = %d ”,Matrix[GET_INDEX(Param1,Param2)]); 16 printf(“公眾號(hào):最后一個(gè)bug ”); 17 return 0; 18}

分析一下:

逗號(hào)表達(dá)式最終還是一個(gè)表達(dá)式,所以它可以直接用在幾乎所有變量可以用的地方,這是和語(yǔ)句不同的。

所以逗號(hào)表達(dá)式左邊的表達(dá)式可以預(yù)先進(jìn)行各種處理,其最右邊的表達(dá)式相當(dāng)于返回最后的結(jié)果,從而減少函數(shù)的封裝和調(diào)用。

4、技術(shù)總結(jié)

逗號(hào)表達(dá)式其實(shí)就是橫向編碼的一種方式,能夠讓程序員更好的利用一行的空間,使得代碼更加緊湊,所以使用逗號(hào)表達(dá)式并沒炫技,而是增強(qiáng)了代碼的靈活度,不過(guò)話說(shuō)回來(lái)逗號(hào)表達(dá)式在C混亂編碼大賽上的使用頻度是非常之高的。

責(zé)任編輯:YYX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7631

    瀏覽量

    141024
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4894

    瀏覽量

    70469
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1659

    瀏覽量

    50068

原文標(biāo)題:C語(yǔ)言進(jìn)階技術(shù):同事這些操作把我驚呆了!

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用
    的頭像 發(fā)表于 05-21 14:15 ?248次閱讀
    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)<b class='flag-5'>進(jìn)階</b>篇-<b class='flag-5'>進(jìn)階</b>7 向系統(tǒng)中添加一個(gè)系統(tǒng)調(diào)用

    深入理解C語(yǔ)言C語(yǔ)言循環(huán)控制

    C語(yǔ)言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無(wú)限循環(huán),C語(yǔ)言提供了多種循環(huán)控制語(yǔ)句,如break、continue和
    的頭像 發(fā)表于 04-29 18:49 ?1026次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>:<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>循環(huán)控制

    C語(yǔ)言的歷史及程序介紹

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言的歷史及程序介紹.pdf》資料免費(fèi)下載
    發(fā)表于 04-09 16:10 ?0次下載

    為什么學(xué)了C語(yǔ)言,卻寫不出像樣的項(xiàng)目?

    在學(xué)習(xí)編程的路上,C語(yǔ)言幾乎是每個(gè)程序員的“必修課”。不管你是打算從事嵌入式開發(fā)、系統(tǒng)編程,還是想要深入理解操作系統(tǒng)的底層原理,C語(yǔ)言都是一
    的頭像 發(fā)表于 03-14 17:37 ?404次閱讀
    為什么學(xué)了<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>,卻寫不出像樣的項(xiàng)目?

    深入理解C語(yǔ)言:循環(huán)語(yǔ)句的應(yīng)用與優(yōu)化技巧

    在程序設(shè)計(jì)中,我們常常需要重復(fù)執(zhí)行某一段代碼。為了提高效率和簡(jiǎn)化代碼,循環(huán)語(yǔ)句應(yīng)運(yùn)而生。C語(yǔ)言作為一門經(jīng)典的編程語(yǔ)言,提供了多種循環(huán)控制結(jié)構(gòu),幫助程序員高效地實(shí)現(xiàn)重復(fù)操作。掌握循環(huán)語(yǔ)句
    的頭像 發(fā)表于 12-07 01:11 ?593次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>:循環(huán)語(yǔ)句的應(yīng)用與優(yōu)化技巧

    C語(yǔ)言程序設(shè)計(jì)教程第4版第8講:指針

    C語(yǔ)言指針講解
    發(fā)表于 11-20 14:10 ?5次下載

    C語(yǔ)言指針學(xué)習(xí)筆記

    本文從底層內(nèi)存分析,徹底讓讀者明白C語(yǔ)言指針的本質(zhì)。
    的頭像 發(fā)表于 11-05 17:40 ?611次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>指針學(xué)習(xí)筆記

    C語(yǔ)言中的socket編程基礎(chǔ)

    Socket編程簡(jiǎn)介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語(yǔ)言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過(guò)使用socket,程序可以發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)不同計(jì)算機(jī)之間的通信
    的頭像 發(fā)表于 11-01 16:51 ?1153次閱讀

    C語(yǔ)言C++中結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語(yǔ)言C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?721次閱讀

    C語(yǔ)言與Java語(yǔ)言的對(duì)比

    C語(yǔ)言和Java語(yǔ)言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢(shì)和特點(diǎn),適用于不同的應(yīng)用場(chǎng)景。以下將從語(yǔ)法特性、內(nèi)存管理、跨平臺(tái)性、性能、應(yīng)用領(lǐng)域等多個(gè)方面對(duì)C
    的頭像 發(fā)表于 10-29 17:31 ?1014次閱讀

    C語(yǔ)言與其他編程語(yǔ)言的比較

    C語(yǔ)言作為一種歷史悠久的編程語(yǔ)言,自其誕生以來(lái),一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)編程的首選語(yǔ)言之一。
    的頭像 發(fā)表于 10-29 17:30 ?1004次閱讀

    Orin芯片的編程語(yǔ)言支持

    Orin是一款高度集成、高性能的車載計(jì)算平臺(tái),由英偉達(dá)推出,并采用了英偉達(dá)自家的Volta架構(gòu)GPU和其他高級(jí)處理器技術(shù)。關(guān)于Orin芯片的編程語(yǔ)言支持,可以從以下幾個(gè)方面進(jìn)行介紹: 一、主要編程
    的頭像 發(fā)表于 10-27 16:45 ?939次閱讀

    c語(yǔ)言中從左到右結(jié)合怎么看

    C語(yǔ)言中,操作符的結(jié)合性(Associativity)是指當(dāng)操作符在表達(dá)式中連續(xù)出現(xiàn)時(shí),它們?nèi)绾闻c操作數(shù)結(jié)合的順序。對(duì)于大多數(shù)二元
    的頭像 發(fā)表于 08-20 11:42 ?1596次閱讀

    C++語(yǔ)言基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《C++語(yǔ)言基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 07-19 10:58 ?8次下載

    按照這樣學(xué)習(xí)C語(yǔ)言,成為卷王不是夢(mèng)!

    在計(jì)算機(jī)編程領(lǐng)域,C語(yǔ)言被譽(yù)為一種強(qiáng)大而靈活的編程語(yǔ)言,掌握好C語(yǔ)言不僅可以讓你輕松駕馭各種編程任務(wù),還能夠?yàn)槟愕穆殬I(yè)生涯打下堅(jiān)實(shí)的基礎(chǔ)。但
    的頭像 發(fā)表于 07-06 08:04 ?604次閱讀
    按照這樣學(xué)習(xí)<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>,成為卷王不是夢(mèng)!