陣列:
int a[10]; 表示定義了乙個整型陣列,陣列名為a,有10個元素。
a[0]——a[9],從低位址到高位址。
一維陣列的初始化:
int a[4] = ;
也可以給部分賦值,只要對其中乙個元素賦過值,其他未賦值的元素為0,如果都不賦值,則各元素的值為隨機值。
a 和 &a, a即是陣列名也是位址
a 與 &a的值相同,意義不同
a是陣列首元素的位址,&a是整個陣列的位址,取第乙個元素的位址作為整個位址。
sizeof(a) 求陣列長度。
*(a[1] + 1), *(&a[1][1]), (*(a+1))[1]可以表示a[1][1]
例:氣泡排序法
#include
#define size 10
void maopao(int a)
inti, j, tmp;
for(i = 0; i < size; i++)
for(j = 0; j < size – i - 1)
if(a[j] > a[j + 1])
tmp= a[j];
a[j]= a[j + 1];
a[j+ 1] = tmp;
int main()
inta[size];
inti, j, tmp;
printf(「pleaseinput:\n」);
for(i = 0; i < size; i++)
scanf(「%d」,&a[i]);
maopao(a);
for(i = 0; i < size; i++)
printf(「%d」, a[i]);
printf(「\n」)
return0;
二維陣列的初始化
a[3][4] = , , };
a, &a, a[0], *a的區別
a首行的位址
&a 陣列的位址
a[0] 陣列首行首元素的位址
*a 同a[0]
*與乙個意思,a[0]等價於*(a+0), a[1]等價於*(a+1)
字元陣列
char c[10];
求陣列的元素個數: sizeof(a) / sizeof(a[0]
strlen():測試字串長度的函式,函式的值為字串中的實際長度(不包括』\0』)
scanf():只能獲取空格前面的字元
strcat():將兩個char型別連線
strcpy():會把』\0』也給複製過去
strncpy(str, ptr, 5):指定複製的位元組數
strcpy的兩個引數是兩個位址
strcmp(str, ptr):比較兩個字串,結果有》0, =0, <0;
str1 = 「hhh」; 不合法
str1 = str2; 不合法
例:在字元陣列中指定位置插入字元
#include
#include
#include
//第一種方法
/*int main()
charstr[20] = ;
charch;
intnum, i, length;
printf("pleaseinput :\n");
scanf("%s%d%c", str, &num, &ch);
if(num>= 20)
printf("error");
exit(1);
length= strlen(str);
for(i = 0; i < length - num + 1; i++)
str[length- i] = str[length - 1 - i];
str[num- 1] = ch;
printf("%s\n",str);
return0;
//第二種方法
int main()
charstr[20] = ;
charptr[20] = ;
charch;
intnum, i, length;
printf("pleaseinput:\n");
scanf("%s%d%c", str, &num, &ch);
if(num>= 20)
printf("error");
exit(1);
strncpy(ptr,str, num -1);
ptr[num- 1] = ch;
//strncat(ptr,&ch, 1);
strcpy(ptr+ num, str + num -1);
printf("%s\n",ptr);
return0;
函式c程式:只包含乙個主函式main(),也可以包含乙個主函式和若干個其他函式(庫函式和自定義函式)
函式型別 函式名(形式引數型別說明表)
宣告部分
執行部分
形參實參名字可以不一樣,但個數於型別必須一致。
函式名是乙個位址。
函式呼叫的步驟:
1、 通過函式名找到函式的入口位址
2、 給形參分配空間(與實參的空間位址無關)
3、 傳值(實參 >> 形參)【分為值傳遞和位址傳遞】
4、 執行函式體
5、 返回(return)到main函式
6、 釋放空間(釋放的是棧空間)
c語言空間分為:
資料段:存放全域性變數,被static修飾的靜態變數
**段:存放**及常量
棧空間:區域性變數;程式執行後全部釋放
堆空間:
register 暫存器變數
盡量在大量頻繁操作時使用暫存器變數,且宣告變數個數應盡量少。
暫存器變數沒有位址
extern宣告外部變數,編譯時需提供c檔案
gcc 1.c 2.c -o 1
只有全域性變數能被extern 宣告
static修飾全域性變數,改變該變數作用域,僅能在本檔案中使用。
static 修飾函式,改變函式作用域,僅能在本檔案中使用
static修飾區域性變數:改變變數的生命週期,直到程式結束才被釋放
main()函式在今後的編寫中應該盡量簡潔,多呼叫函式,而不是在main中使用函式。
預處理預處理命令種類
巨集定義 #define
檔案包含 #include
條件編譯 #if--#else--#endif
語句結尾不加分號
#include <>:去系統指定的目錄中找(庫)
#include 」」:當前目錄下(自定義)
課堂筆記 C語言基礎與提高1
c語言基礎與提高 基本資料型別的位元組 整型 int 4個位元組 單精度浮點型float 4個位元組 雙精度浮點型 double 8個位元組 字元型char 1個位元組 長整型 long 4個位元組 8個位元組 64位 短整型 short 2個位元組 sizeof 不是函式,是乙個運算子 例1 下面...
課堂筆記 C語言基礎與提高3
指標 1 定義與作用 指標是變數的一種,裡面是位址,通過位址找到要找的資料。單元的位址就是指標的內容 2 指標運算子 是取位址的運算子,是表示指標運算子 例 int p1,a p1 a p1 3 1.定義時表示的是指標變數。2.使用時表示取值。例 利用指標運算實現strcpy include inc...
C語言課堂筆記2
一.順序語句與分支語句的知識總結 1 for語句.forfor 先判斷條件後執行語句。注 for語句末尾不加分號 2 while語句.while 表示式 先判斷條件後迴圈。注 while語句末尾不加分號,否則將陷入死迴圈。3.c 語言處理的資料基本型別及形式 資料基本型別 常量 值保持不變 和變數 ...