陣列
:將同型別的同作用的變數,放在一起統一管理,
所有元素,在記憶體中,都是連續儲存的,
陣列在宣告的時候就需要確定多少個元素,記憶體空間是一次性開闢成功
使用陣列的某一元素,需要使用陣列名加下標的方式使用,下標從零開始計數
陣列初始化
int arr[5]=; arr[0] 陣列首位址
資料型別:
基本資料型別
指標型別
列舉型別
指標--> 指標型別變數
*p1=a;
p1=&a;
指標只是乙個儲存位址編號的變數
指標型別只是普通資料型別之一
*p 間接引用 可以取到或修改 這塊記憶體位址上儲存的內容
指標的指標
二級指標 **p1
指標陣列
陣列中全是指標的陣列
加1 , 在陣列中移動
加* , 取出對應位址的內容
int a = 2;
int b = 3;
int c = 4;
int * p1 = &a;
int * p2 = &b;
int * p3 = &c;
int * parr[3] = ;
for(i = 0 ; i < 3 ; i++)
二維陣列 a 可看成多個一維陣列
int arr[行][列
] == int arr
int arr 相同列數的 多個一維陣列
*(arr+1) 在乙個陣列中移動,移動了一列 ==arr[0]-->arr[1]
arr 行指標
行指標加* 變成列指標
列指標加& 變行指標
字串實現基於字元陣列
字串有有效字元
字串結束標誌:'\0'
宣告字串就是宣告乙個字元陣列
strcmp (arr,brr)==0 比較字串是否一樣
strlen(name1)==strlen(name2) 確定字串是否一樣
strlen(name); 字串有效位是多少
sizeof(name); name儲存寬度
strcat (name1,name2); 將
name2
接到name1
後輸出 越界問題
name1
儲存空間是否夠容納
name2
strcpy (
str1,str2
) 把二拷貝給一
char name[20] = "jack";
int age = 40;
char result[50];
sprintf(result,"姓名
:%s,
年齡:%d",name,age);
將「」裡的內容作為
result
printf("%s\n",result); 函式:
return 函式名(
needs
) 返回值 函式名 引數需求
void myprintf(); void 不需要返回
int myprintf(); 返回值為
int型變數 形參
:在宣告函式時,用來代替真實輸入值
實參:函式呼叫時,輸入的真實值
不需要改變外界的值的時候,傳變數本身,也就是賦值傳值
要改變外界的值的時候,傳變數的位址。傳址
標頭檔案包含
aa .c --->aa .h
在.h 檔案中 寫入函式宣告及巨集定義
#ifndef _filename_h_
#define _filename_h_
巨集定義 #define name_len 20
函式宣告;
#endif
gcc編譯器處理步驟:
預處理 -e
彙編 -s
編譯 -c
gcc -c a.c -o a.i -o 給新名字
make 編譯管理工具
建立makefile檔案格式
main:main.o a.o b.o
gcc main.o a.o b.o -o main
main.o:main.c
gcc -c main.c -o main.o
a.o:a.c
gcc -c a.c -o a.o
b.o:b.c
gcc -c b.c -o b.o
變數 : 必須先宣告
宣告可以多次 ,不開闢空間。
定義只能一次 , 會開闢空間。
後定義再使用
關鍵字: static 靜態變數 :
生命週期變長,整個程式存續期間都存在
,值能夠儲存下來,
初始化語句只執行一次
extern 宣告外部變數 , 告訴編譯器,變數宣告在別的檔案 ,暫時忽略定義錯誤,一般用在全域性變數上
學習嵌入式第六天
1.c語言基礎之結構體 結構體 struct 指的是一種資料結構,是c語言中聚合資料型別 aggregate data type 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員 member 且這些成員可以為不同的型別,...
蘇嵌嵌入式實訓第六天
課程總結 1 函式的三要素 函式名 形參 返回值 函式名 命名 自注釋性 動詞 名詞 函式引數 引數是什麼型別,形參就要定義成什麼型別 傳位址和返回值 只當使用不修改實參變數的值,傳實參變數名 當使用以及修改實參變數的值,傳實參變數的位址 2 記憶體管理 2g的物理記憶體空間分成4g的虛擬位址空間 ...
C 第六天學習
一次性儲存或者宣告多個相同型別的變數 陣列 陣列型別 陣列名 new 陣列型別 陣列長度 int nums new int 10 nums 0 1 nums 1 2 nums 2 3 nums 3 4 nums 4 5 nums 5 6 nums 6 7 nums 7 10 nums 8 9 num...