程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> iOS開發入門 ☞ C語言(標准函數、預處理)

iOS開發入門 ☞ C語言(標准函數、預處理)

編輯:關於C++

iOS開發入門 ☞ C語言(標准函數、預處理)。本站提示廣大學習愛好者:(iOS開發入門 ☞ C語言(標准函數、預處理))文章只能為提供參考,不一定能成為您想要的結果。以下是iOS開發入門 ☞ C語言(標准函數、預處理)正文


C語言標准函數 1. 堆內存管理
  • malloc函數(動態內存分配):在堆中分配指定大小的一段連續的內存空間,返回這片內存的首地址。(分配內存空間)

    返回類型是 void* 類型,void* 表示未確定類型的指針。C,C++規定,void* 類型可以強制轉換為任何其它類型的指針。

   (提示:在C中void*可以不用強制轉換,但在C++中一定要強轉,否則編譯不通過報錯;便於程序能移植到C++中,建議養成強制轉換的習慣)

  

    

  • calloc函數:與malloc作用相同,只是默認會把分配到的所有字節都清零。(分配內存空間 + 初始化清零)

    calloc()函數有兩個參數,分別為元素的數目和每個元素的大小,這兩個參數的乘積就是要分配的內存空間的大小。

    

  • realloc函數:更改由malloc()函數分配的內存空間的大小。並將新的內存指針返回。
    • 如果將分配的內存減少,realloc僅僅是改變索引的信息。
    • 如果是將分配的內存擴大,則有以下情況:
      • 如果當前內存段後面有需要的內存空間,則直接擴展這段內存空間,realloc()將返回原指針。

      • 如果當前內存段後面的空閒字節不夠,那麼就使用堆中的第一個能夠滿足這一要求的內存塊,將目前的數據復制到新的位置,並將原來的數據塊釋放掉,返回新的內存塊位置。 
      • 如果申請失敗,將返回NULL,此時,原來的指針仍然有效。可以使用realloc函數對用malloc函數分配好的空間重新分配,一般是擴大。

    • 注意:如果調用成功,不管當前內存段後面的空閒空間是否滿足要求,都會釋放掉原來的指針,重新返回一個指針,雖然返回的指針有可能和原來的指針一樣,即不能再次釋放掉原來的指針。

     

  • free函數:釋放內存空間

    free(p); //釋放指針p所指的內存空間

2. 標准輸入輸出

(1)控制台輸入輸出,可以接收用戶從鍵盤上輸入的數據

  • scanf()在輸入字符的時候存在緩沖區問題

    通過scanf("%*c");清除緩沖區。

  • scanf()和gets()在輸入字符串的時候不存在緩沖區問題,但存在安全性問題(內存溢出)  
  • fgets()函數,解決安全性問題
    • 語法格式:fgets(參數1,參數2,參數3);
      • 參數1:保存數據的首位置
      • 參數2:保存的長度(包括結束符)
      • 參數3:stdin(標准控制台輸入)

 (2)格式化輸入輸出

  • printf()可以輸出字符串,並且可以根據占位符的個數來決定輸出字符串的個數。
  • puts()可以輸出一個字符串,而且是自動換行。

  • printf()與puts

    • 相同點:都可以輸出字符串

    • 不同點:

      • printf()需要手動換行,可以多次輸出字符

      • puts()自動換行,只能輸出一次字符串內容

         

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved