C語言基礎學習筆記內容簡單說明:初始c語言部分只是大概了解一下c語言的內容,很多地方不會深入探究,因為后面的章節會進行詳細的講解,
說明:我是一個初學c語言的小白,很多地方都不是很理解,所以就會自己動手敲代碼進行相應的推理驗證,希望可愛的你在看到這些步驟時,不要嫌棄我啰嗦,(比如吐槽:這作者咋這樣呀,這么簡單的還要敲代碼驗證,真菜呀!…我:好吧,我不裝了,我攤牌了,我確實菜,真的菜,咋滴啦,還不允許初學者菜呀!)
內心獨白:上一篇文章發布后,沒想到閱讀和支持的小可愛那么多,真的是非常感謝大家!也希望我的博客文章可以真正的幫助到每一個還在編程路上探索,摸爬滾爬…摸爬勒塔…摸爬滾摸…滾塔…滾勒…摸了摸…摸它滾塔…摸爬!摸爬滾塔!…摸爬滾打,(這普通話可真燙嘴QAQ…)
4.常量
c語言中的常量分為以下4種:
字面常量、const修飾的常變數、#define定義的識別符號常量、列舉常量
①字面常量:1 100 3.14 22 A 等等…
②const修飾的常變數
變數是可以變化的值,但是被const修飾后,這個變數就不能變了


雖然被const修飾的變數叫做常變數,具有常屬性,但其本質仍然是變數,而不是常量,所以不能放到陣列的方括號[]中


③#define定義的識別符號常量 舉例: #define Max 10

④列舉常量 列舉:一一列舉 例如 性別:男、女、保密
三原色:紅、黃、藍 星期:周一……周日
列舉關鍵字 enum
例如
enum Sex
{
male,
female,
secert
};
其中male,female,secert就是列舉常量,列舉常量實際是有值的,我們可以將其值列印出來如下: enum Sex s 是列舉型別變數

5.字串 + 轉義字符 + 注釋
①字串
“hallo world” 這種由雙引號引起來的一串字符稱為字串字面值,簡稱字串
“” – - 空字符
注意:字串的結束標志是一個 \0的轉義字符,在計算字串長度的時候\0是結束標志,不算做字串的內容
用陣列存盤字串的時候,陣列的長度需要將\0計算上,只是單獨計算字串長度時不計算\0
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}

#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
int a1 = 0;
int a2 = 0;
a1 = sizeof(arr1) / sizeof(arr1[0]);
a2 = sizeof(arr2) / sizeof(arr2[0]);
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("a1 = %d\n", a1);
printf("a2 = %d\n", a2);
printf("Length of arr1 :%d\n", strlen(arr1));
printf("Length of arr2 :%d\n", strlen(arr2));//沒有結束標志,隨機值
return 0;
}

用F10(或Fn + F10)除錯,打開監視視窗查看陣列arr1,arr2

這里我們看到’a’前面有一個值97,這個是a的ASCII值

②轉義字符
轉義:轉變原本含義 使其具有其他含義 一個轉義字符的長度為1,例如\t 長度為一,不能計算成2,另外\0不計算到字串的長度當中,僅當作字串結束的標志,
#include<stdio.h>
int main()
{
printf("c:\code\test,c\n");
return 0;
}

除錯:轉義


③注釋
注釋有兩種風格
/* */ c語言風格 缺陷:不能嵌套注釋
// c++語言風格 (推薦)
6.選擇陳述句
在我們的生活中,會有各種各樣的選擇,不同的選擇,往往帶來不同的結果,
在我們的人生中,也會遇到各種各樣的選擇,不同的選擇會決定我們今后不同的人生軌跡,
#include<stdio.h>
//選擇陳述句,人生會遇到各種各樣的選擇,選擇不同,人生道路也會有所不同
int main()
{
int a;
printf("你會好好學習編程嗎?:(1:會 0:不會)>>\n");
scanf("%d", &a);
if (a == 1)
printf("好offer\n");
else
printf("loser\n");
return 0;
}

if (條件判斷) { 執行陳述句 }
else { 執行陳述句 }
7.回圈陳述句
很多事情需要一直去做,比如老師需要日復一日,年復一年去教學,學習編程需要每天都去敲代碼,
#include<stdio.h>
int main()
{
int line = 0;
while (line <= 100000)
{
printf("敲一行代碼\n");
line++;
}
if (line > 100000)
printf("你可以得到一個好offer\n");
return 0;
}

while(條件判斷)
{
回圈體
}
8.函式
簡化代碼,代碼復用,分為自定義函式、庫函式
int Add(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int a = 10;
int b = 30;
int sum = 0;
int num1 = 100;
int num2 = 200;
sum = Add(a, b);
printf("sum = %d\n", sum);
sum = Add(num1, num2);
printf("sum = %d\n", sum);
return 0;
}

函式回傳型別 函式名(函式引數型別 函式引數1,函式引數型別 函式引數2…)
{
函式體
}
9.陣列
用于存放一組相同資料型別的資料變數,陣列的下標[]從0開始計算,a[0]代表第一個元素,具有n個元素的陣列,其下標最大為n - 1,
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
while (i < 10)
{
printf("%d ", arr[i]);
i++;
}
return 0;
}

10.運算子
(1)算術運算子
加法運算子 + 雙目運算子 使兩個數相加 1 + 2 = 3
減法運算子 - 雙目運算子 使兩個數相減 2 - 1 = 1
乘法運算子 * 雙目運算子 使兩個數相乘 2 * 3 = 6
除法運算子 / 雙目運算子 使兩個數相除,得到商 5 / 2 = 2
取模運算子 % 雙目運算子 使兩個數相除,得到余數 5 % 2 = 1
/ 兩端均為整數的時候,執行整數除法;
兩端只要有一個是小數,則執行小數除法,
#include<stdio.h>
int main()
{
int a = 2;
int b = 5;
int c = b % a;
printf("a+b = %d\n", a + b);
printf("b-a = %d\n", b - a);
printf("a*b = %d\n", a * b);
printf("b/a = %d\n", b / a);
printf("b%%a = %d\n", c);
return 0;
}

(2)移位運算子:針對的是二進制的操作
左移:二進制左邊丟棄,右邊補0
例如:十進制的5 二進制為00000000 00000000 00000000 00000101
左移2位后變成:00000000 00000000 00000000 00010100 十進制為20
右移:跟左移類似,但是要注意右移后其正負號不變,也就是二進制最高位不變
十進制的5 二進制為00000000 00000000 00000000 00000101
右移2位后變成:00000000 00000000 00000000 00000001 十進制為1
#include<stdio.h>
int main()
{
int a = 5;
int b = 0;
int c = 0;
b = a << 2;//a本身的值并不會變
c = a >> 2;
printf("a<<2 = %d\n", b);
printf("a>>2 = %d\n", c);
return 0;
}

(3)位運算子 二進制運算子
c語言中0表示假,非0表示真
按位與 & 011 & 101 = 001 即3 & 5 = 1
按二進制位,一假則假,二真才真
按位或 | 011 & 101 = 111 即3 & 5 = 7
按二進制位,一真則真,二假才假
按位異或 ^ 011 & 101 = 110 即3 & 5 = 6
按二進制位,相同為假,相異為真
#include<stdio.h>
int main()
{
int a = 3;
int b = 5;
printf("a&b = %d\n", a & b);
printf("a|b = %d\n", a | b);
printf("a^b = %d\n", a ^ b);
return 0;
}

(4)賦值運算子
賦值(等于) = 例如:a = 4; 給a賦值為4
[== 判斷是否相等 注意區分 = 與 == ]
加等于 += 例如 a += 3 等價于 a = a + 3
減等于 -= 例如 a -= 3 等價于 a = a - 3
乘等于 *= 例如 a *= 3 等價于 a = a * 3
除等于 /= 例如 a /= 3 等價于 a = a / 3
按位與等于 &= 例如 a &= 3 等價于 a = a & 3
按位異或等于 ^= 例如 a ^= 3 等價于 a = a ^ 3
按位或等于 |= 例如 a |= 3 等價于 a = a | 3
按位左移等于 >>= 例如 a >>= 3 等價于 a = a >> 3
按位右移等于 <<= 例如 a <<= 3 等價于 a = a << 3
#include<stdio.h>
int main()
{
int a = 5;
printf("a = 3--->%d\n", a = 3);
printf("a += 3--->%d\n", a += 3);
printf("a -= 3--->%d\n", a -= 3);
printf("a *= 3--->%d\n", a *= 3);
printf("a /= 3--->%d\n", a /= 3);
printf("a &= 3--->%d\n", a &= 3);
printf("a ^= 3--->%d\n", a ^= 3);
printf("a |= 3--->%d\n", a |= 3);
printf("a = 9--->%d\n", a = 9);
printf("a >>= 3--->%d\n", a >>= 3);
printf("a <<= 3--->%d\n", a <<= 3);
return 0;
}

(5)單目運算子
邏輯反操作 ! c語言中0為假 一切非0為真 對0進行邏輯反操作!0 = 1(真 固定值1) 對非0進行邏輯反操作 !2 = 0(假)
負值 - 得到負數 如 - 2 = -2 (負2) - ( - 2) = 2
正值 + 例如 2 實際為 + 2 只是一般 + 號省略了
取地址 & 得到一個變數相應的地址編碼
型別長度 sizeof()得到一個變數或者型別的長度,以位元組為單位
用sizeof來計算陣列元素個數 sizeof(a) / sizeof(a[0])
按位取反 ~對一個數的二進制按位取反
例如 1011 按位取反后為 0100 ,資料在計算機中存盤的是二進制的補碼,使用的是原碼 原碼按位取反(符號位不變) 得到反碼 反碼 + 1得到補碼 補碼 - 1 得到反碼 反碼按位取反(符號位不變)得到原碼
前置、后置-- --自減
前置、后置++ ++自增
解參考運算子 * 間接訪問運算子
強制型別轉換 (型別) 例如:(int)強制轉換為int型別 (char)強制轉換為char型別
#include<stdio.h>
int main()
{
int a = 2;
double b = 4.11;
int c = 97;
printf("!a = %d\n", !a);
printf("-a = %d\n", -a);
printf("+a = %d\n", +a);
printf("&a = %d\n", &a);
printf("sizeof(a) = %d\n", sizeof(a));
printf("~a = %d\n", ~a);
printf("++a = %d\n", ++a);
printf("a++ = %d\n", a++);
printf("--a = %d\n", --a);
printf("a-- = %d\n", a--);
printf("*(&a)= %d\n", *(&a));
printf("(int)b = %d\n", (int)b);
printf("(char)a = %c\n", (char)c);
return 0;
}

(6)關系運算子
大于 > 用于判斷或測驗 大于
大于等于 >= 用于判斷或測驗 大于等于
小于 < 用于判斷或測驗 小于
小于等于 <= 用于判斷或測驗 小于等于
是否不相等 != 用于判斷或測驗 不相等
是否相等 == 用于判斷或測驗 相等
(7)邏輯運算子
邏輯與 && (運算式1) && (運算式2) 同真為真一假則假 舉例(1 < 2) && (2 > 3) 為假 (1 < 2) && (2 < 3) 為真
邏輯或 || (運算式1) || (運算式2) 同假為假一真則真 舉例(1 < 2) || (2 > 3) 為真 (1 > 2) || (2 > 3) 為假
(8)條件運算子
exp1 ? exp2 : exp3 運算式exp1 為真 則整個運算式exp1 ? exp2 : exp3的值為 exp2 否則為 exp3
(9)逗號運算式
exp1, exp2, exp3, ……expN
(10)下標參考、函式呼叫和結構成員
下標參考[] 比如陣列 a[0] 代表第一個元素
函式呼叫 () Add(a, b)
結構成員 .->Std.name Std->name Std是結構體變數
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/272535.html
標籤:其他
上一篇:【ArcGIS遇上Python】使用addin開發ArcGIS插件(1):工具介紹及安裝
下一篇:用OSPF進行vlan劃分
