課堂筆記 C語言基礎與提高2

2021-08-15 03:39:10 字數 3321 閱讀 1519

陣列:

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 語言處理的資料基本型別及形式 資料基本型別 常量 值保持不變 和變數 ...