㈠ const在c語言中有哪些用法
const是一個C語言的關鍵字,它限定一個變數不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一些幫助。另外CONST在其他編程語言中也有出現,如C++、PHP5、C#.net、HC08
C。
(1)可以定義const常量,具有不可變性。
例如:const
int
Max=100;
Max++會產生錯誤;
(2)便於進行類型檢查,使編譯器對處理內容有更多了解,消除了一些隱患。
例如:
void
f(const
int
i)
{
.........}
編譯器就會知道i是一個常量,不允許修改;
(3)可以避免意義模糊的數字出現,同樣可以很方便地進行參數的調整和修改。
同宏定義一樣,可以做到不變則已,一變都變!
如(1)中,如果想修改Max的內容,只需要:const
int
Max=you
want;即可!
(4)可以保護被修飾的東西,防止意外的修改,增強程序的健壯性。
還是上面的例子,如果在函數體內修改了i,編譯器就會報錯;
例如:
void
f(const
int
i)
{
i=10;//error!
}
㈡ c語言中const 是什麼意思,怎麼用,什麼時候用
常類型是指使用類型修飾符const說明的類型,常類型的變數或對象的值是不能被更新的。
const 推出的初始目的,正是為了取代預編譯指令,消除它的缺點,同時繼承它的優點。
㈢ c語言中const 是什麼意思
可以定義const常量,具有不可變性。
例如:const int Max=100; Max++會產生錯誤;便於進行類型檢查,使編譯器對處理內容有更多了解,消除了一些隱患。
例如: void f(const int i) { .........} 編譯器就會知道i是一個常量,不允許修改;可以避免意義模糊的數字出現,同樣可以很方便地進行參數的調整和修改。 同宏定義一樣,可以做到不變則已,一變都變!
如(1)中,如果想修改Max的內容,只需要它修改成:const int Max=you want;即可!可以保護被修飾的東西,防止意外的修改,增強程序的健壯性。 還是上面的例子,如果在函數體內修改了i,編譯器就會報錯;
例如: void f(const int i) { i=10;//error! }
可以節省空間,避免不必要的內存分配。 例如:
#define PI 3.14159 //常量宏
const doublePi=3.14159; //此時並未將Pi放入RAM中 ......
double i=Pi; //此時為Pi分配內存,以後不再分配!
double I=PI; //編譯期間進行宏替換,分配內存
double j=Pi; //沒有內存分配
double J=PI; //再進行宏替換,又一次分配內存!
const定義常量從匯編的角度來看,只是給出了對應的內存地址,而不是像#define一樣給出的是立即數,所以,const定義的常量在程序運行過程中只有一份拷貝,而#define定義的常量在內存中有若干份拷貝。
6. 提高了效率。
編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內存的操作,使得它的效率也很高。
(3)c語言頭文件中的const擴展閱讀:const是一個C語言(ANSI C)的關鍵字,具有著舉足輕重的地位。它限定一個變數不允許被改變,產生靜態作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一定幫助。另外CONST在其它編程語言中也有出現,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
㈣ c語言里const int 和int 有什麼區別,const的作用是什麼。
一、區別如下:
1、int定義的量是變數,它的值可以更改;而const int 定義的是一個常量,它的值不可以更改。
2、int在定義的時候,不需要初始化,而const int 在定義的時候必須初始化;
二、const的作用:把對象轉換成一個常量
拓展資料
const與define。兩者都可以用來定義常量,但是const定義時,定義了常量的類型,所以更精確一些。#define只是簡單的文本替換,除了可以定義常量外,還可以用來定義一些簡單的函數,有點類似內聯函數(Inline)。const和define定義的常量可以放在頭文件裡面。
㈤ 請問c 語言中的 const 是什麼意思
const是C++才有的,和C語言的define一樣也是用來定義常量的。即出現在const後面的是常量,是有地址的,可以用指針來指向那個常量值,但是不能修改它。
㈥ c語言問題,這些函數後邊跟個const 啥意思 求解
const 限定符,它把一個對象轉換成一個常量。
1.》》const與define。兩者都可以用來定義常量,但是const定義時,定義了常量的類型,所以更精確一些。#define只是簡單的文本替換,除了可以定義常量外,還可以用來定義一些簡單的函數,有點類似內聯函數(Inline)。const和define定義的常量可以放在頭文件裡面。(小註:可以多次聲明,但只能定義一次)
2.》》const與指針和引用。
(a)const與指針。
先來看看下面的幾種定義:
intme;
constint*p1=&me;//p1可變,*p1不可變,此時不能用*p1來修改,但是p1可以轉向
int*constp2=&me;//p2不可變,*p2可變,此時允許*p2來修改其值,但是p2不能轉向。
constint*constp3=&me;//p3不可變,*p3也不可變,此時既不能用*p3來修改其值,也不能轉向
(b)指針和引用的區別很簡單,就是引用更簡潔,更安全。因為引用聲明時必須初始化。 引用更接近const指針,一旦與某個變數關聯,就將一直效忠於他。
(c)const指針可以接受const和非const地址,但是非const指針只能接受非const地址。所以const指針的能力更強一些,所以盡量多用const指針,這是一種習慣。
3.》》(a)const與函數。由於2(c),所以經常把函數的形參類型設為const,而且多為const 引用。但是這里有一個限制,不能把不是左值的地址傳遞給引用。(左值包括變數,數組元素,結構成員,引用,被解除引用的指針等)。 形參是const類型的,說明該函數將不會修改其值,該函數便為const函數。
(b)const與類成員函數。先看看下面這段代碼:
constStockland=Stock("hyd");
land.show();
land 是常量,但是類成員函數show無法保證不修改land,所以編譯器將拒絕執行該段代碼。除非你能保證show像const函數一樣,但這需要另外一種語法,即:
void show() const; //聲明
void Stock::show() const{} //定義
㈦ 定義在頭文件中的const變數
C++中const默認為定義他的文件的局部變數,而C中認為是extern的量。
但是在c中若constint X = 10; 把「=10」去掉。
那也可以編譯成功了,因為這些定義都是弱符號,C語言可以支持多個弱符號。
例如:
C/C++code
/* headerer.h */
#ifndef HEADER_H_
#define HEADER_H_
#include <stdio.h>
const int X = 10;
void func1(void);
void func2(void);
#endif
C/C++ code
/* file1.c */
#include "headerer.h"
void func1(void)
{
printf("This is file1. X =%d\n", X);
return;
}
C/C++ code
/* file2.c */
#include "headerer.h"
void func2(void)
{
printf("This is file2. X =%d\n", X);
return;
}
C/C++ code
/* main.c */
#include "headerer.h"
int main()
{
printf("This is main. X =%d\n", X);
func1();
func2();
return 0;
}
㈧ C語言中const是什麼意思。。。
const 推出的初始目的,正是為了取代預編譯指令,消除它的缺點,同時繼承它的優點。
const關鍵字使用非常的靈活,這一點和php差別很大,php中const用來在類中定義一個常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起來也是非常的靈活。
一、const用來修飾普通的變數(指針變數除外)的時候,const type name 和 type const name 這兩種形式是完全等價的,都表示其是常量,不能進行修改。
二、const用來修飾指針變數的時候,分為以下四種情況
1、const type *name :這種情況下,const修飾的指針變數name所指向的type類型對象,也就是說指向的這個對象是不能進行修改的,因為其是常量,而指針變數確實可以進行修改的。
2、type const *name :這種情況下,const修飾的指針變數name所指向的type類型對象,意思完全同上,只是顛倒了以下順序。
3、type * const name :這種情況下,const修飾的指針變數name,也就是說這個指針變數的值是不能進行修改的,但是指針變數所指向的對象確實可以修改的。
4、const type * const name :這種情況下,const修飾的指針變數name以及指針變數name所指向的對象,也就是說這個指針變數以及這個指針變數所指向的對象都是不能進行修改的。
(8)c語言頭文件中的const擴展閱讀
使用const在一定程度上可以提高程序的安全性和可靠性。另外,在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一定幫助。另外CONST在其它編程語言中也有出現,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
在c中,對於const定義的指針,不賦初值編譯不報錯,int* const px;這種定義是不允許的。(指針常量定義的時候對其進行初始化)int const *px;這種定義是允許的。(常指針可以再定義的時候不初始化)
但是,在C++中int* const px;和const int* const px;會報錯,const int* px;不報錯。必須初始化指針的指向int* const px = &x;const int* const px=&x;強烈建議在初始化時說明指針的指向,防止出現野指針!
㈨ 計算機C語言中的關鍵字:const是什麼意思
const
修飾數字的話就表示為常數
const
修改指針的話就表示指針指向的地址不可改變(地址中存的值可以變)
㈩ C++中const什麼意思
在標准C++中,這樣定義的是一個常量,用來修飾內置類型變數,自定義對象,成員函數,返回值,函數參數。
const使用(類型):
1、用於指針的兩種情況:const是一個左結合的類型修飾符.
int const*A;//A可變,*A不可變
int*const A;//A不可變,*A可變
2、限定函數的傳遞值參數:
void function(const int Var);//傳遞過來的參數在函數內不可以改變.
3、限定函數返回值型.
const int function();//此時const無意義
const myclassname function();//函數返回自定義類型myclassname.
4、限定函數類型.
void function()const;//常成員函數,常成員函數是不能改變成員變數值的函數。
(10)c語言頭文件中的const擴展閱讀:
總結:
1、指針本身是常量不可變
(char*) const pContent;
const (char*) pContent;
2、指針所指向的內容是常量不可變
const (char) *pContent;
(char) const *pContent;
3、 兩者都不可變
const char* const pContent;
4、其中區別方法:
沿著*號劃一條線,
如果const位於*的左側,則const就是用來修飾指針所指向的變數,即指針指向為常量;
如果const位於*的右側,const就是修飾指針本身,即指針本身是常量。
5、const修飾函數參數
const修飾函數參數是它最廣泛的一種用途,它表示函數體中不能修改參數的值(包括參數本身的值或者參數其中包含的值)。它可以很好
void function(const int Var); //傳遞過來的參數在函數內不可以改變(無意義,因為Var本身就是形參)
void function(const char* Var); //參數指針所指內容為常量不可變
void function(char* const Var); //參數指針本身為常量不可變(也無意義, 因為char* Var也是形參)
參數為引用,為了增加效率同時防止修改。
6、修飾引用參數時:
void function(const Class& Var);//引用參數在函數內不可以改變
void function(const TYPE& Var); //引用參數在函數內為常量不可變
7、const 修飾函數返回值
const修飾函數返回值其實用的並不是很多,它的含義和const修飾普通變數以及指針的含義基本相同。
(1) const int fun1() 這個其實無意義,因為參數返回本身就是賦值。
(2) const int * fun2()
8、調用時 const int *