C語言基礎知識總結
- C語言中的第一個代碼
- 計算機中的單位
- C語言中的資料型別
- 變數的作用域和生命周期
- 常量
- 字串+轉義字符+注釋
- 選擇陳述句
- 回圈陳述句
- 函式
- 陣列
- 運算子
- 關鍵字
- define定義常量和宏
- 指標
- 指標變數的大小
- 結構體
C語言中的第一個代碼
int main()
{
printf("Hello World!\n");//列印結果為Hello World!
return 0;
}
計算機中的單位
bit – 位元位
1 byte - 位元組 = 8 bit
1 kb = 1024 byte
1 mb = 1024 kb
1 gb =1024 mb
1 tb = 1024 gb
1 pb = 1024 tb
C語言中的資料型別
(大小單位是位元組):
char 字符型(1)
short 短整型 (2)
int 整型 (4)
long 長整型(4)
long long 更長的整型 (8)
float 單精度浮點型 (4)
double 雙精度浮點型(8)
在C語言中,如何創建一個變數:
型別+變數的名字 = 值
例如:int a = 20 char b = ‘c’ double d = 1.0
變數:能被改變的量
常量:不能被改變的量
變數的分類:
區域變數:{ }內部定義的
全域變數:{ }外部定義的
注意:當區域變數和全域變數名字沖突的情況下,區域變數優先,
在這里,給大家寫一個簡單的C語言代碼,讓大家初識一下C語言變數的使用,
寫一個代碼,求輸入兩個整數的和,
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//求兩個整數的和
int main()
{
int a = 0;
int b = 0;
int sum = 0;
scanf("%d %d", &a, &b);
sum = a + b;
printf("%d\n", sum);
return 0;
}
變數的作用域和生命周期
作用域:限定變數名字的可用性的代碼范圍就是這個名字的作用域,通俗來講就是,一個變數能在哪里使用,哪里就是它的作用域,
區域變數的作用域:就是區域變數所在的區域范圍,
全域變數的作用域:整個工程內
生命周期:指的是變數的創建和銷毀之間的時間段
區域變數的生命周期:變數進入區域范圍那一刻,生命開始;離開區域范圍那一刻,生命結束,
全域變數的生命周期:整個main函式內,即整個程式的生命周期,
常量
C語言中的常量分為:
1)字面常量
例如:3 、‘a’、“abcdef”
2)const修飾的常變數
例如:const int num = 10
num就是常變數,具有常屬性(不能被改變的屬性),本質還是變數,
3)#define定義的識別符號常量
例如:#define MAX 10000
MAX在這里就是define定義的識別符號常量,在這里MAX的值就是10000,
4)列舉常量
例如:指的是可以一一列舉的常量
> enum Sex
> {
> MALE,//列舉常量,不賦值的話,默認從0開始,
> FEMALE,
> SECRET
> };
字串+轉義字符+注釋
字串就是一串字符 - 用雙引號引起的一串字符就是字串,
注意:字串在結尾的位置隱藏了一個\0的字符,\0是字串的結束標志,
在這里給大家一個實體:
#include <stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c' };
char arr3[] = { 'a', 'b', 'c' ,'\0'};
printf("%s\n", arr1);//abc
printf("%s\n", arr2);//abc燙燙燙
//這是為什么呢?原因就是%s是要列印一個字串的,而字串的結尾標志
//是\0,而arr2的陣列里面沒有\0,因此不會遇到結束標志,從而停止,
printf("%s\n", arr3);//abc
//如果按照arr3列印,才會列印出abc,
return 0;
}
在這里給大家展示一個求字串的長度的函式:strlen()
#include <stdio.h>
#include <string.h>
int main()
{
int len = strlen("abc");
printf("%d\n", len);//3
char arr2[] = { 'a', 'b', 'c' };
printf("%d\n", strlen(arr2));//隨機值,因為沒有結束標志\0,
return 0;
}
注意:字串的結束標志雖然是\0,但是在用strlen來計算字串的長度時,是不會把\0當作內容計算的,因為它只是結束的標志,不能算作內容,
但是在用sizeof來計算陣列或者字串大小的時候,\0是要被算作內容的,因為它占據著空間,
轉義字符
一個代碼讓你搞懂什么是轉義字符:
int main()
{
printf("c:\code\test.c\n");// \t在這里是轉義字符,為水平制表符
//你以為的結果是c:\code\test.c\n
//但實際的結果是c:code est.c
return 0;
}
顧名思義,轉義字符就是轉變這個字符的原有意思,下面給大家介紹一些常見的轉義字符,
轉義字符 釋義
\? 在書寫連續多個問號時使用,防止他們被決議成三字母詞
\' 用于表示字符常量'
\“ 用于表示一個字串內部的雙引號
\\ 用于表示一個反斜杠,防止它被解釋為一個轉義序列符,
\a 警告字符,蜂鳴
\b 退格符
\f 進紙符
\n 換行
\r 回車
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3個八進制的數字, 如: \130 X
\xdd dd表示2個十六進制數字, 如: \x30 0
注釋
注釋是用來解釋復雜代碼的,
兩種注釋方法:
1)//
2) /* …*/
選擇陳述句
這里就是一個選擇陳述句的示例:
int main()
{
int a = 0;
printf("你是男孩還是女孩?(選擇1 or 0):>");
scanf("%d", &a);
if (a == 1)
{
printf("我是男孩子\n");
}
else
{
printf("我是女孩子\n");
}
return 0;
}
回圈陳述句
C語言中實作回圈一般有三種陳述句:
1)while陳述句
2)for陳述句
3)do…while陳述句
這里給大家以while陳述句為例,演示一個簡單的回圈陳述句:
int main()
{
int a = 0;
while (a < 30000)//回圈
{
printf("工資:%d\n", a);
a++;
}
if (a == 30000)
{
printf("領到工資30000元\n");
}
return 0;
}
函式
上面我們寫了一個求兩個整數之和的代碼,在這里,我們在此基礎上加以修改,借用函式來實作這個功能的實作,
示例如下:
int Add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 0;
int b = 0;
int sum = 0;
printf("請輸入兩個數:>");
scanf("%d %d", &a, &b);
//sum = a + b;
sum = Add(a, b);
printf("%d\n", sum);
return 0;
}
陣列
> 陣列是什么?
> 一組相同型別的元素的集合就是陣列,
> 例如:int arr[10] = {1,2,3,4,5,6,7,8,9,10};
> char ch[5] = {'a','b','c'}; //不完全初始化,剩余的默認為0.
> 陣列是用下標來訪問的,陣列的下標從0開始,
運算子
算數運算子:+ - * / %
移位運算子:>>(右移) <<(左移)
位運算子:&(按位與) ^(按位異或) |(按位或)
賦值運算子:= += -= *= /= &= ^= |= >>= <<=
單目運算子:
! 邏輯反操作
- 負值
+ 正值
& 取地址
sizeof 運算元的型別長度(以位元組為單位)
~ 對一個數的二進制按位取反
-- 前置、后置--
++ 前置、后置++
* 間接訪問運算子(解參考運算子)
(型別) 強制型別轉換
關系運算子:
>
>=
<
<=
!= 用于測驗“不相等”
== 用于測驗“相等
邏輯運算子:
&& 邏輯與
|| 邏輯或
條件運算子:
exp1 ? exp2 : exp3
逗號運算式:
exp1, exp2, exp3, …expN
下標參考、函式呼叫和結構成員:
[] () . ->
關鍵字
常見關鍵字:
auto break case char const continue default do double else
enum extern float for goto if int long register return short
signed sizeof static struct switch typedef union unsigned void
volatile while
在這里介紹幾個關鍵字:
auto 是自動的 - 每個區域變數都是auto修飾的
extern 是用來申明外部符號的
register 暫存器關鍵字,把資料存到暫存器中
signed 有符號的
unsigned 無符號的
static 靜態的
union 聯合體(共用體)
void 無(空)
typedef 型別定義,型別重命名
注意:define、include不是關鍵字,是預處理指令,
static 靜態的
1)static修飾區域變數
static修飾區域變數,改變了區域變數的生命周期(本質上是改變了變數的存盤型別)
2)static修飾全域變數
static修飾全域變數,使得全域變數只能在自己所在的源檔案內部可以使用,其他源檔案不能使用,
全域變數,在其他源檔案內部可以被使用,是因為全域變數具有外部連接屬性,但是被static修飾之后,就變成了內部連接屬性,其他源檔案就不能鏈接到這個靜態的全域變數了,
3)static修飾函式
static修飾函式,使得函式只能在自己所在的源檔案內部使用,不能在其他源檔案內部使用,本質上,static是將函式的外部鏈接屬性變成了內部鏈接屬性!(和static修飾全域變數一樣!)
define定義常量和宏
define是一個預處理指令
1)define定義符號
2)define定義宏:
示例:
#define ADD(X,Y) X+Y
int main()
{
printf("%d\n", ADD(2, 3));
return 0;
}
指標
指標是用來存放地址的
int main()
{
int a = 10;//a在記憶體中要分配空間的 - 4個位元組
printf("%p\n", &a);//%p專門用來列印地址的
int * pa = &a;//pa是用來存放地址的,在c語言中pa是叫指標變數
//*說明pa是指標變數
//int說明pa執行的物件是int型別的
return 0;
}
int main()
{
int a = 10;
int * pa = &a;
*pa = 20;//*解參考操作,*pa就是通過pa里邊的地址,找到a,
printf("%d\n", a);
return 0;
}
指標變數的大小
int main()
{
printf("%d\n", sizeof(char *));//4
printf("%d\n", sizeof(short *));//4
printf("%d\n", sizeof(int *));//4
printf("%d\n", sizeof(double *));//4
return 0;
}
由此可見,指標大小在32位平臺是4個位元組,64位平臺是8個位元組,
結構體
結構體可以讓C語言創建新的型別出來,什么意思呢?示例如下:
//創建一個學生的型別
struct Stu
{
char name[20];//成員變數
int age;
double score;
};
//創建一個書的型別
struct Book
{
char name[20];
float price;
char id[30];
};
int main()
{
struct Stu s = { "張三", 20, 85.5 };
//結構體的創建和初始化
printf("1:%s %d %lf\n", s.name, s.age, s.score);
//結構體變數.成員變數
struct Stu * ps = &s;
printf("2:%s %d %lf\n", (*ps).name, (*ps).age, (*ps).score);
printf("3:%s %d %lf\n", ps->name, ps->age, ps->score);
//結構體指標 -> 成員變數名
return 0;
}
C語言基礎知識暫時告一段落了!
希望這些對大家有幫助,
下次再會!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/291908.html
標籤:其他
下一篇:永磁同步電機的I/F啟動控制策略
