1. 程式人生 > >“輸入輸出函式對比及總結”和 const

“輸入輸出函式對比及總結”和 const


1、什麼是const
       const是一個型別修飾符,使用const修飾變數則可以讓變數的值不能改變
常量型別是指使用型別修飾符const說明的型別,常型別的變數或物件的值是不能被更新的

2、const有什麼主要的作用
     1>可以定義const常量,具有不可變形
     2>便於進行型別檢查,是編譯器對處理內容有更多瞭解,消除了一些隱患。
     3>可以避免意義模糊的數字出現,同樣可以很方便地進行引數的調整和修改。同巨集定義一樣,可以做到不變則已,一變都變!如果想要修改const定義過的內容,只需要:const  int  max=you want;即可
     4>可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。還是上面的例子,如果在函式體內修改了i,編譯器就會報錯
     5>可以節省空間,避免不必要的記憶體分配。例如
#define   PI   3.14159       //巨集定義
const   doulbe  Pi=3.14159  //此時並未將Pi放入rom中
double  i=Pi;    //此時為Pi分配記憶體,以後不再分配
double  I=PI; //編譯期間進行巨集替換,分配記憶體
double  j=Pi;    //沒有記憶體分配
double  J=PI;   //再進行巨集替換,又一次分配記憶體
const定義常量從彙編的角度來看,只是給出了對應的記憶體地址,而不是像#define一樣給出的是立即數,所以,const定義的常量在程式執行過程中只有一份拷貝,而#define定義的常量在記憶體中有若干個拷貝
     6>提高了效率。編譯器通常部位普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為一個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高

3、如何使用const
    
    1>修飾一般常量 一般常量是指簡單型別的常量。這種常量在定義時,修飾符const可以用在型別說明符前,也可以用在型別說明符後。
     比如:
              int  const   x=2;
        或
             const  int    x=2;
    
    2>修飾常陣列(值不能夠改變了)定義或說明一個常陣列可採用如下格式:
     比如:
              int const  a[5]={1,2,3,4,5};
         或
              const  int  a[5]={1,2,3,4,5};

    3>修飾函式的常引數  const修飾符也可以修飾函式的傳遞引數,格式如下:
         void  fun(const  int  var);
                 告訴編譯器var在函式體中的無法改變,從而防止了使用者的一些無意的或錯誤的修改
   
    4>修飾函式的返回值:const修飾符也可以修飾函式的返回值,是返回值不可被改變,格式如下:
        const   int   fun1();
        const   Myclass  fun2();

    5>修飾常指標
        const   int  *a;
        const 修飾指標, a可變,a指向的值不能被修改

        int   const   *a
        const 修飾指標, a可變,a指向的值不能被修改

下面我們通過例項來看看const的影響
程式如下:

列印輸出如下:

說明:
         這是列印了我們定義的兩個變數的值;下面我們來改變一下變數的值看看

列印如下:

總結:
         從這個列印圖來看可以知道,用const定義過的變數的值是不可以修改的
程式如下:

列印如下:

總結:
         從列印圖可以知道,當我們用指標來指向const型別定義的變數時,通過指標可以改變const型別定義的變數的值。值得注意的是,在xcode中是不能實現通過指標可以改變const型別定義的變數的值
。這也許是編譯器不同造成的差異


下面看看讓指標p指向變數b是否可以成功
程式如下:

列印如下:

總結:
         從上圖列印我們可以知道,指標p是可以隨便指向任何一個變數

下面我們看看由const定義的指標p的情況

列印如下:

總結:
         從列印圖可以知道,const型別指標指定指向地址後是不可以再改變地址,但是可以改變指向變數的值


列印如下:

總結:
         從上圖可以知道:用const  int  *const  p=&b  定義的指標,既不能改變值也不能改變指標的指向


總結:
         關於const和指標變數的總結
         看const  和   *的位置:

         如果   const  在  *   的左側      表示指標變數指向的變數的值不能變,但是指向可以改變
       
         如果   const  在  *   的右側      表示指標變數指向的變數的值可以改變,但是指向不可以改變

         如果   const  出現在  *   的兩側,   表示指標變數的指向和值都不能改變
        










相關推薦

輸入輸出函式對比總結 const

1、什麼是const        const是一個型別修飾符,使用const修飾變數則可以讓變數的值不能改變 常量型別是指使用型別修飾符const說明的型別,常型別的變數或物件的值是不能被更新的 2、const有什麼主要的作用      1>可以定義const常量,具有不可變形      2>

《C指標》之“輸入輸出函式總結

1. 先來幾個小的程式! /*Test 1*/ #include <stdio.h> #include <stdlib.h> int main(int argc,char *argv[]) { printf("%d",3.14);

python學習番外篇之print輸出函式用法原理總結

print輸出函式用法及原理總結:        在python2.x中,print作為關鍵字使用,輸出用print語句輸出,例如,x=5 ; print x ,但在python3.x中,print則成為了一個函式,輸出用print()函式輸出,例如:x=5 ; print(

字串的輸入輸出函式總結

字元資料的輸入輸出 1.putchar 函式(字元輸出函式)         putchar 函式是字元輸出函式, 其功能是在顯示器上輸出單個字元。其一般形式為:putchar(字元變數). 2.getchar函式(鍵盤輸入函式)         getchar函式的功能

Python3快速入門——(1)python變數輸入輸出函式

1、Python語言Python 是一種解釋型、面向物件、動態資料型別的高階程式設計語言Python 是一種解釋型語言: 這意味著開發過程中沒有了編譯這個環節。類似於PHP和Perl語言。Python

C中輸入輸出函式總結

輸入函式:scanf(),gets(),fgets(),fscanf(),fgets(); 輸出函式:printf(),puts(),fputs(),fprintf,fputs();  scanf() 在讀取字串時從第一個非 空白字元(空格,製表符,換行符) 開始讀自導

C語言輸入輸出函式總結

在C語言中,輸入輸出函式有著相當重要的地位,它是我們的程式與使用者互動的唯一途徑,現在我就將C語言中比較常見的幾個輸入輸出函式介紹給大家,以下這些講解都是針對VC除錯平臺。 (一)   格式化輸入輸出函式 (1)scanf( )格式化輸入函式 格式輸入函式scanf( )函

字符串字符數組的輸入輸出種類對比

接受 etl pan bsp getc get comm nbsp () 字符數組: char a[1000]; 第一種:gets(a) ; // 可接受空格 gets()函數將接收輸入的整個字符串 直到遇到換行為止 註意:使用gets時,需要註意前面

C/C++輸入輸出函式(I/O)總結

在c語言的學習使用過程中,除了格式化輸入輸出外,還有很多輸入輸出函式,包括字串輸入輸出、檔案輸入輸出等。在使用的過程中一直沒有認真總結過,在這裡把以前學的好好總結一下,以便時間長了又忘記了。 字串輸入輸出 1、輸入函式:gets、fgets、scanf

C語言的標準輸入輸出函式學習總結

I/O對於程式設計是必不可少的,程式的執行既需要有資料的輸入,也需要有相應結果的輸出,這是程式的基本。 學習C語言首先接觸的兩個I/O函式:printf(char*,...)和scanf(char*,...) printf 它的返回值為它輸出字元的個數,如printf(“H

幾個輸入輸出函數的總結

回車 獲取 char 字符串 sca 取字符 轉換 添加 put scanf()   當遇到回車、空格和、tab鍵會結束讀取且自動在字符串後面添加‘\0‘,‘\n‘、空格、tab(包括空格和tab)之後的東西還會留在buffer中。 gets()   獲取字符串的時候用‘\

python輸入輸出練習,運算練習turtle練習

llc forward pytho bgcolor 輸入 pre for port 輸入輸出 >>> print(‘hello‘) hello    >>> a=float(input(‘輸入三角形第一邊長:‘)) 輸入三角形第一

Linux輸入輸出以及vim命令總結

/etc/一、管理輸入輸出在linux系統中,正確輸出的編號為1,錯誤輸出編號為2在系統中用普通用戶執行 "student"find /etc/ -name passwd > file因為student並沒有查看更多密碼的權利,所以只能在shell裏面顯示已經查找到但是沒有權利查看的文件而以stud

Java中IO流,輸入輸出流概述與總結

ips 刪除一個文件 數據 長度 還要 都是 模式 方式 歌曲 轉自:https://www.cnblogs.com/biehongli/p/6074713.html 1:Java語言定義了許多類專門負責各種方式的輸入或者輸出,這些類都被放在java.io包中。其中, 所有

C++中getline等輸入輸出函式的用法

此文轉自 在學習C++的過程中,經常會遇到輸入輸出的問題,以下總結一下下面幾個函式的用法: 1)、cin 2)、cin.get() 3)、cin.getline

java io 流 輸入輸出 大牛經典總結(轉載)

轉載出處:https://www.cnblogs.com/shaohz2014/p/3652548.html  java io 流 輸入輸出 大牛經典總結       在軟體開發中,資料流和資料庫操作佔據了一個很重要的位置,所以,熟

matlab的基本用法---常用的輸入輸出函式

matlab中print,fprintf,fscanf,disp,input函式的用法 1. print print函式用於將作出的函式影象儲存成指定格式的圖片,緊跟在函式影象後面,引數用來指定儲存的格式和儲存後圖片的名稱,一般情況下儲存的位置為當前matlab的路徑,也可以指定儲存的位

C語言 資料型別輸入輸出函式(2018.11.17)

基本資料型別 5個方式瞭解基本型別 1、符號 2、位元組數 3、資料範圍 4、表示方法 5、運算方法 記憶體空間分配給變數,不是型別 指標型別:指標變臉中只能存放地址 空型別:主要用於資料型別的轉換和定義函式型別 void指標是萬用指標,萬用=無用,多數用於型別轉換後使用 限定性流程

java輸入輸出(13) 字符集CharSet

簡而言之,把看得懂字元轉換成看不懂的二進位制數就是編碼,將二進位制數轉換成看得懂的字元就是解碼 字符集其實是很簡單,沒有任何技術難度的,只是為了解決二進位制序列和字元之間的對應關係,需要一個大家都認同的字符集而已。 具體的講解穿插在程式碼中 import java.ni

演算法提高 3-2字串輸入輸出函式

描述   編寫函式GetReal和GetString,在main函式中分別呼叫這兩個函式。在讀入一個實數和一個字串後,將讀入的結果依次用printf輸出。   兩次輸入前要輸出的提示資訊分別是"ple