陣列基本操作
int a[4] = {9,8,7,6}; // 部分初始化,剩餘補 0
float b[6] = {2.5, 3.14}; // 前兩項賦值,其餘 0.0
char c[3] = "abc"; // 自動補 '\0',需 size≥4
char d[3] = {'a','b','c'}; // 無結束符,非字串
常見演算法範例
隨機生成 + 求和
int sum=0, a[20];
for(i=0;i<20;i++) { a[i]=rand()%41+30; sum+=a[i]; }
陣列複製
for(i=0;i<20;i++) b[i]=a[i];
對應元素相加存入第三陣列
c[i] = a[i] + b[i];
氣泡排序
for(i=0;ia[j+1]) swap(&a[j], &a[j+1]);
字串核心函數
| 函數 | 用途 | 注意 |
strlen | 字串長度(不含 \0) | 遇 \0 停止 |
strcpy(dst, src) | 複製字串 | dst 需足夠空間 |
strcat(dst, src) | 拼接字串 | dst 需足夠空間 |
strcmp(s1, s2) | 比較字串(ASCII 碼) | 返回 >0/=0/<0 |
字串反轉實作
char str[] = "hello";
int len = strlen(str);
for (int i=0, j=len-1; i
避坑提醒
- 陣列**不做邊界檢查**,越界行為未定義
- 陣列名是**常量指標**,不可賦值(
arr = p 錯誤)
sizeof(arr) 得整個陣列大小,strlen(arr) 得字串長度
- 字串常量在
.rodata,指標指向時不可修改內容