日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c 总结

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c 总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C-總結

?
?

?

#pragma mark -?第一章:C基礎

void?func1();

void?func1()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????int?a = 030;????????//?以0開頭得數是八進制的數,計算的時候要換算成10進制進行計算

????int?b = a * 10;

????printf("%d", b);????//?此時打印出來的結果是240

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?注釋的嵌套問題

????// 1.?單行注釋可以嵌套單行注釋

????// 2.?單行注釋可以嵌套多行注釋

????// 3.?多行注釋可以嵌套單行注釋

????// 4.?多行注釋不可以嵌套多行注釋(注意項)

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????int?c = 10;

????c++;

????++c;

????//?注意遞增、遞減運算符在前在后的兩種情況,一種是返回新值,一種是返回舊值,還需要注意,不管是返回新值還是返回舊值,運算完之后,c的值都會發生改變

}

?

?

#pragma mark -?第二章:分支結構

void?func2();

void?func2()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????int?a = 10, b = 20;

????BOOL?result = (a++ > 100 && b++ > 20);

????printf("result = %d a = %d b = %d\n", result, a, b);

????//?結果如下,注意?-短路-?情況,邏輯或‘||’也是一樣的

????// result = 0 a = 11 b = 20

????// '&&':一假即假,全真則真

????// '||':一真即真,全假則假

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????enum?Season {

????????spring,

????????summer = 4,

????????autumn,

????????winter

????};

????printf("autumn = %d",?autumn);

????//?結果: 需要注意的是,枚舉變量的值是上一個值?+1

????// autumn = 5

}

?

?

?

#pragma mark -?第三章:循環結構

void?func3();

void?func3()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?隨機數公式:隨機出范圍在a~b之間的隨機數:arc4random() % (b - a + 1) + a;

????int?a = 10, b = 100;

????int?random =?arc4random() % (b - a + 1) + a;

????printf("random = %d\n", random);

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????// break;?關鍵字,跳出本層循環,后面的東西全都不再執行

????// continue;?關鍵字,跳出本次循環,本次循環后面的東西不再執行,下一次繼續執行

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????for?(; ; ) {

????????printf("for循環中的任何條件都可以缺失,只是這種寫法會造成死循環\n");

????}

}

?

?

#pragma mark -?第四章:數組

void?func4();

void?func4()

{

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????int?a[5] = { 2, 7, 4, 3, 6 };

????int?b[5] = { 2, 7, 4 };

????int?c[5] = { 0 };

????int?d[]??= { 2, 7, 4, 3, 6 };

????//?注意這些的區別,個數不寫的話會自動計算,寫了個數不能超,不寫的默認是0

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????int?count = 10;

????// int arr[count] = {0}; //?注意,這種寫法是錯誤的,變量不可以放在數組定義的中括號中,可以是常量和宏定義

????int?arr[10] = {0};

#define kArrayCount?10

????int?arr2[kArrayCount] = {0};

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?系統不會檢測數組下標是否越界,所以我們程序員一定要注意數組下標越界的問題

????//?數組是一個整體,不能直接參加運算,只能對單個元素進行處理,通常用到數組的地方都會用到循環

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?冒泡排序寫法

????int?array[] = {10, 23, 53, 123, 3, 53, 23, 123, 53};

????int?arrayCount =?sizeof(array) /?sizeof(int);

????//?雙層循環

????for?(int?i = 0; i < arrayCount - 1; i++) {

????????for?(int?j = 0; j < arrayCount - 1 - i; j++) {

????????????if?(array[j] > array[j + 1]) {

????????????????int?temp = array[j];

????????????????array[j] = array[j + 1];

????????????????array[j + 1] = temp;

????????????}

????????}

????}

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?字符數組兩種寫法:

????char?str1[] = {'i', 'P', 'h', 'o', 'n', 'e'};

????char?str2[] =?"iPhone";

????//?字符串默認使用?'\0'?作為結束標示,使用雙引號的方式,自帶?'\0' ,?使用數組的方式,需要手動添加?'\0'?才可以成為字符串

}

?

?

#pragma mark -?第六章:函數

void?func6();

void?func6()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?在函數調用的時候,只能調用上面的函數,不能去調用下面的函數,如果想要調用下面的函數,需要在上面進行聲明

????//?函數可以嵌套調用,但是函數不可以嵌套定義

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?函數的形參:出現在函數定義中的變量,值是從實參拷貝過來得

????//?函數的實參:在函數調用的時候傳遞給函數的,可以通過指針的方式修改實參的值

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?普通變量作為參數的時候,修改形參的值,實參的值不會發生變化

????//?當數組作為參數的時候,修改形參的值,實參的值會跟著發生變化,因為,數組作為參數時候,傳遞是的數組的首地址,操作的是同一塊內存區域

}

?

?

#pragma mark -?第七章:結構體

void?func7();

void?func7()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?定義類型

????typedef struct?{

????????char?name[30];

????????int?age;

????????float?score;

????} Student;

????

????//?創建變量

????Student?stu = {"lidaze", 18, 100.0f};

????

????//?訪問成員變量,使用?‘.’?的方式訪問

????printf("name = %s age = %d score = %.2f\n", stu.name, stu.age, stu.score);

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?結構體是可以嵌套的

????//?訪問的時候,使用?'.'?依次找到實例變量進行操作

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?結構體變量可以直接賦值

????//?我們可以通過把數組放在結構體中,實現數組的直接運算

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?結構體內存占用

????//??以最大成員變量類型所占空間為分配單位

????//?按結構體成員聲明順序自上而下分配

????//?注:分配空間不足以存儲成員變量時,分配新的空間單位

}

?

?

#pragma mark -?第八章:指針

void?func8();

void?func8()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?指針的算術運算

????int?a = 10;

????int?*p = &a;

????p++;

????p--;

????//?指針的運算是移動一個單位的長度,這個長度到底是多少個字節,取決于指針的類型

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????// '*'?的作用:

????//?在定義指針中,‘*’?起到告訴編譯器,要聲明的是一個指針

????//?在指針的使用過程中,使用‘*’,此時‘*’是取值運算符,根絕內存地址,拿出這空間內得內容

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?指針與數組

????int?array[] = {123, 42, 52, 5, 32, 535, 35, 343};

????int?*p1 = array;

????//?數組名代表數組的首地址,用指針指向數組的時候,直接把數組名賦給指針變量即可,不需要使用‘&’符號

????//?數組名和指針的使用方式一樣

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?指針與結構體

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?指針與結構體

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?詳細內容見:http://blog.sina.com.cn/s/blog_9c2363ad0102uxlw.html

}

?

?

?

#pragma mark -?第九章:結構體指針

void?func9();

void?func9()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????typedef struct?{

????????char?name[20];

????????int?age;

????} Student;

????

????Student?stu = {"lidaze", 18};

????

????//?指針指向結構體變量,類型需要相同

????Student?*p = &stu;

????

????//?使用指針訪問結構體成員,很特殊,使用?'->'

????printf("name = %s age = %d\n", p->name, p->age);

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?宏定義

#define SUM(a, b) ((a) + (b))

????//?使用宏定義的時候需要注意,尤其是帶參數的宏,最好把每個參數和最外層都加上小括號,防止出錯?

}

?

?

#pragma mark -?第十章:動態內存分配

void?func10();

void?func10()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?內存共分為5個區:

????//?棧區

????//?堆區

????//?靜態區(全局區)

????//?常量區

????//?代碼區

????

????

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?堆內存的管理需要我們手動來管理

????int?*p =?malloc(sizeof(int));?//?分配一塊空間

????*p = 123;

????printf("p = %d\n", *p);

????free(p);?//?使用完成之后需要使用

????// free(p); //?不允許過渡釋放,同時也不允許不釋放,會造成內存泄露

????

????//?開辟內存空間的同時,會把每一個字節清零,效率低,耗費時間,?

????int?*p1 =?calloc(4,?sizeof(int));

????

????//?重新分配空間

????p1 =?realloc(p1,?sizeof(int) * 10);

????

????free(p1);

}

?

?

#pragma mark -?第十一章:函數指針

void?func11();

void?func11()

{

????// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

????//?函數指針:即是指向函數的指針

????//?函數指針的提取:返回值類型?(*) (參數類型)

????// void (*) ():??函數void func11()的類型

????//?使用函數類型的時候太麻煩,給函數類型起個別名

????typedef?void?(*FuncPoint) ();

????

????//?使用指針,指向函數

????FuncPoint?p =?func4;

????

????//?普通調用函數

????func4();

????//?使用指針調用函數

????p();

????

}

?

?

?

#pragma mark -?主函數

int?main(int?argc,?const?char?* argv[])

{

????return?0;

}

?

轉載于:https://www.cnblogs.com/iOS-mt/p/4091219.html

總結

以上是生活随笔為你收集整理的c 总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。