陣列與字串的知識點

2021-09-11 08:38:45 字數 1555 閱讀 9988

陣列與字串

1.稍大的陣列盡量定義在main函式外,否則會異常退出。

2.陣列a複製k個元素到陣列b,memcpy(b,a,sizeof(int) *k)。元素是浮點型:memcpy(b,a,sizeof(double) *k)。全部複製:memcpy(b,a,sizeof(a))。

3.memset(a,0,sizeof(a))將陣列a清零。

4.fgetc(fin),getchar(),fgets(),gets()

5.c/c++中的結束輸入條件判斷 (scanf、eof、getchar()、cin.get()、getline)

6.sort函式有三個引數:

(1)第乙個是要排序的陣列的起始位址。

(2)第二個是結束的位址(最後一位要排序的位址)

(3)第三個引數是排序的方法,可以是從大到小(加,complare)也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。

sort函式使用模板:sort(start,end,排序方法)

7.困擾了我一天的乙個問題:陣列沒有存放滿怎麼來判斷有效的真實元素個數。答案是不知道,因為未滿的陣列會補0。當然也可以想辦法判斷非0數字的個數,但如果原來存放了0進去,就沒有辦法了。

8.strlen函式是不包括『\0』的長度的,sizeof計算的結果才包括』\0』的長度。

9.isspace()函式:檢查引數c是否為空格字元,也就是判斷是否為空格(』 『)、水平定位字元

(』\t』)、歸位鍵(』\r』)、換行(』\n』)、垂直定位字元(』\v』)或翻頁(』\f』)的情況。

10.atoi (表示 ascii to integer)是把字串轉換成整型數的乙個函式。

11.當輸入乙個字串裡面會含有』\n』,』\0』等的時候,用scanf("%s")是不行的,那麼可以用gets()函式。但是gets函式可能會造成溢位等問題。相比下來用%[ ^ \n ]就比較好了。^代表的意思是"非"。

eg:scanf("%[^\n]s",a)。

12.在scanf中加*的作用,就是跳過當前輸入值,即不賦值給任何變數。

13.scanf("%s",&a);與scanf("%s",a);的區別是什麼?

14.所以對於scanf()而言,%c是個較為特殊的說明符。 %c前沒空格,scanf()將讀取標準輸入流中的第乙個字元,%c前有空格,scanf()則讀取標準輸入流中第乙個非空白字元。

15.pow函式:

pow() 函式用來求 x 的 y 次冪(次方),x、y及函式值都是double型 ,其原型為:

double pow(double x, double y);

pow()用來計算以x 為底的 y 次方值,然後將結果返回。設返回值為 ret,則 ret = xy。

可能導致錯誤的情況:

如果底數 x 為負數並且指數 y 不是整數,將會導致 domain error 錯誤。

如果底數 x 和指數 y 都是 0,可能會導致 domain error 錯誤,也可能沒有;這跟庫的實現有關。

如果底數 x 是 0,指數 y 是負數,可能會導致 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實現有關。

C語言陣列與字串小知識點

一 c語言陣列使用,存放規則等 1 如 陣列int ages 是一種錯誤的寫法。1 如果想再定義陣列的同時進行初始化,陣列元素個數必須是常量,或者不寫。int a 5 int ages a 也是錯誤的,裡面只能放常量。2 int a 5 int ages a 是正確的。因為沒有進行初始化。2 想計算...

字串知識點checklist

知識點checklist 1 strlen 函式的返回值是什麼型別的?2 字串strlen 的值,是否和他佔據的記憶體空間相同?3 你是否知道strcpy 函式存在的潛在風險?如何避免?4 如果乙個字串沒有字串結束符,而呼叫str 開頭的庫函式,會發生什麼?5 strcpy strcat strcm...

字串小知識點

1 字串操作 strcpy p,p1 複製字串 strncpy p,p1,n 複製指定長度字串 strcat p,p1 附加字串 strncat p,p1,n 附加指定長度字串 strlen p 取字串長度 strcmp p,p1 比較字串 strcasecmp忽略大小寫比較字串 strncmp p...