“輸入輸出函式對比及總結”和 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指向的值不能被修改
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