當前位置:首頁 » 密碼管理 » c的訪問修飾符

c的訪問修飾符

發布時間: 2022-05-12 12:27:06

A. 用c語言編程 修飾符起到什麼作用

static修飾符可以使函數僅在當前模塊(文件)中有效,外部模塊無法調用static修飾的函數;
如果全局存在同名的函數,則static會屏蔽掉全局函數,相當於在當前模塊中重載這個函數.

B. 在C#編程中,訪問修飾符控製程序

private
因為微軟認為,只要你不對此類進行修飾的話,則此類就會被保護起來,
他們對安全性也出於考慮,這也是一種習慣,所以我們在寫C#程序的時候,一般要想別人可以訪問的話,就只好用public來修飾

所以默認的是 private

上面那老兄看書了沒有啊,答案不是亂說的,
也許這是基礎,高手也許不會太在意這東西,但是C#中默認類的修飾符確實是
private

public是java中的編程風格,類默認都是public的

C. C的修飾符有哪些

static:修飾符:修飾變數,函數。作用域:變數僅僅在本文件可見,函數在本文件可以被調用。static在函數內部定義的話,分配在堆中,數值保存在data段,而不是在棧中,而且只賦值一次。
extern:修飾符:修飾變數,函數。修飾變數時候,變數的聲明在外面,修飾函數的時候,如果函數已經聲明,則作用不是很大。
const:修飾符:修飾變數,函數。修飾變數時候,不能被重復賦值,只能放在只讀段中。修飾函數時候,表明函數的返回值必須為常數。
volatile:(嵌入式程序員必須掌握的)volatile最初的意思是表示汽油容易揮發,在c中的作用大概有兩點(1)表示變數是易失的,易變的。(2)強制訪存操作,防止編譯器去優化,告訴編譯器每次必須去內存中取值,而不是從寄存器或者緩存

D. 在c語言中修飾符的用法

  1. const
    首先需要注意的是,const修飾的是在它前面的類型,如果它前面沒有類型,那它修 飾的是緊跟著它的那個類型。 例如:
    (a)const int i = 0; 和 (b)int const i = 0; 是完全一樣的。
    在(a)中,const前面沒有類型,它就修飾它後面的那個int類型。在(b)中,const修飾它前 面的int類型,兩者沒有任何區別。
    再看另一個稍復雜一點的例子,下面兩條語句卻不相同: (c)const int *pi = 0;
    /* 相當於int const *pi = 0; pi是一個指向const int的指針,復引用此運算符為得到一 個const int的類型,該類型不能作為左值,在該語句後使用類似於*pi = 1的操作將導致 編譯錯誤。但該變數本身並不具備const屬性,可以使用pi = &i的操作。可用於訪問只讀 存儲器。*/
    (d)int* const pi = 0;
    /* pi是一個指向int類型的const指針,復引用此運算符為得到一個int類型,該類型可以 作為左值,在該語句可以使用類似於*pi = 1的操作,但該變數本身具備const屬性,使用 pi = &i的操作將導致編譯錯誤。可用於訪問固定位置的存儲器。*/ 再看一個更復雜的例子:
    (e)const int* const pi = 0;
    /* pi和*pi均不能作為左值。它只適合於讀取某個固定位置的只讀存儲器 */
    const還有下列典型用法:
    * 用於參數列表,通常修飾的是指針類型,表明該函數不會試圖對傳入的地址進行寫 操作。例如:
    void *memcpy(void *, const void *, size_t);
    * 用於返回值,通常是一個指向只讀區域的指針。例如: const datatype_t *get_fixed_item(int index);
    * 給固定不變的數據(例如碼表)加上只讀屬性,在某些情況下可以減小ram的開銷。


    2.static
    static用於全局變數聲明和局部變數聲明具有完全不同的語義,不得不說,這是C語 言設計中的一個不合理之處。當static用於修飾全局變數聲明(或函數聲明,可以認為函數 聲明就是聲明一個指向代碼段的指針,該指針的值最後由鏈接時決定,從這個意義上說, 函數聲明也是一種全局變數聲明),它表示該變數具有文件作用域,只能被該源文件的代碼 引用,不能被其他源文件中的代碼訪問。在編譯時引起的實際變化是被static修飾的變數 不會被寫入目標文件的輸出節,在鏈接時解析其他模塊中的未定義符號時不會被引用到。 它的反義詞是extern。


var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);

例如:
------main.c---
extern int a(void);
int main(){ return a(); } ------a.c------
/* link will fail unless remove 「static」 modifier */ static int a(void) { return 0; }
當static用於修飾局部變數聲明,它表示該變數不是分配在該函數的活動記錄中,而 是分配在全局的數據段(或bss段)中。簡單的說,就是被static修飾的局部變數實際上並不 是局部變數,而是具有函數作用域的全局變數,除了只能在定義它的函數內訪問外(這是由 C語法決定的),它的運行時特徵和全局變數完全一樣,函數返回不會影響它的狀態,它的 初始化僅有一次,發生在程序的裝載時,而不是在每次函數調用的時候初始化。它的反義 詞是auto。
例如, 下面這段函數返回自己被調用了多少次: int callee(void) {
static int times_called = 0; return (++ times_called); }


3.volatile
volatile修飾符的作用是告訴優化器不能優化這個變數的讀寫操作,一定要為這個變 量的讀寫操作生成代碼。 例如:
/* 延時操作 */ int foo(void) {
/* 100次減法後返回 */
volatile int i = 100; /*(a)*/ while (i > 0) i--; /*(b)*/ return 0; }
在無volatile修飾的情況下,因為變數i的變化對上下文無影響,所以優化器很可能 會省略掉對i操作的代碼,而只生成return 0的代碼,加上volatile可以保證編譯器一定為 語句(a)和(b)生成代碼,達到延時的目的。
/* 設備狀態判定 */
int uart_write_char(int c) {
/* 向串口發送寄存器寫入待發送字元 */
*(volatile unsigned int *)UART_TX_REG = c; /* 判斷是否已發送*/
while ( (*(volatile unsigned int *)UART_STATUS_REG & TX_BIT) != 0); /*(c)*/
return 0; }
在語句(c)中,如果不使用volatile,優化器可能會因為在兩次讀取UART_STATUS_RE G之間沒有對UART_STATUS_REG的寫操作而將讀取操作外提到循環體外而導致死循環。

E. 理解C語言中幾個常見修飾符

格式符其實是佔位符,它後面對應的數據實際上是堆棧,具體可以先學數據結構;至於轉義字元什麼的,一般的編程語言中都有,主要是為了與語言使用的字元相區別

F. C中訪問修飾符有哪幾種

public
公有訪問。不受任何限制。private
私有訪問。只限於本類成員訪問,子類,實例都不能訪問。protected
保護訪問。只限於本類和子類訪問,實例不能訪問。internal
內部訪問。只限於本項目內訪問,其他不能訪問。protected
internal
內部保護訪問。只限於本項目或是子類訪問,其他不能訪問

G. C#定義類的訪問修飾符是什麼意思

protected 只是限製成員訪問,無關內部對象,

就好象你的代碼中,A和B同在一個類中,那麼可以說是所在Program類,

派生類 就是繼承自當前類的子類

再定義類C

classProgram

{

staticvoidMain(string[]args)

{

Aa=newA();

Bb=newB();

}

protectedclassA

{

}


protectedclassB:A

{

}

}

classC:Program
{
//那麼這個地方就可以這樣寫
//一樣可以通過
publicvoidtesta()
{
Aa=newA();
}
}

H. 什麼是訪問控制符有哪些訪問控制符哪些可以用來修飾類哪些用來修飾域和方法試述不同訪問控制符的作用

一,非訪問修飾符。

1, 抽象類:
凡是用abstract修飾符修飾的類被稱為抽象類。抽象類就是沒有具體對象的概念類。
抽象類是一種經過優化的概念組織方式:把共同特點抽象出來;其後在描述和處理某一種具體對象時,就只需描述不同的特殊之處。這種組織方式使得所有的概念層次分明,簡潔洗練,非常符合人們日常的思維習慣。
由於抽象類是它的所有子類的公共屬性的集合,所以使用抽象類的一個優點就是可以充分利用這些公共屬性來提高開發和維護程序的效率。
值得一提的是,面向對象技術是要用更接近於人類思維方式的方法來處理實際問題,抽象類的設立就是這種思想的具體體現之一,它是模仿人類的思維模式的產物。

2,最終類:
如果一個類被final修飾符所修飾和限定,說明這個類不可能有子類。
被定義為final的類通常是一些有固定作用、用來完成某種標准功能的類。如Java系統定義好的用來實現網路功能的InterAddress、Socket等類都是final類。
abstract和final修飾符不能同時修飾一個類,因為abstract類自身沒有具體對象,需要派生出子類後在創建子類的對象;而final類不可能有子類。這樣放在一起修飾就沒有意義了。

3,有些類的修飾符也可以用來修飾類中的域或方法:

(1) 域:是類和對象的靜態屬性,定義域的操作就是說明變數或創建對象的操作。

<1> 靜態域:
用static修飾符修飾的域是僅屬於類的靜態域。靜態域是類中每個對象共享的域。他們是類的域,不屬於任何一個類的具體對象。是一個公共的存儲單元,任何一個類的對象訪問它時,取到的都是相同的數值。

<2> 靜態初始化器:
靜態初始化器是由關鍵字static引導的一對大括弧括起的語句組。作用是:在載入時,初始化類的靜態域。
與構造函數相同,他們都是用來完成初始化的工作,但是靜態初始化器與構造函數有三點不同:
①構造函數是對每個新創建的對象初始化,而靜態初始化器是對類自身進行初始化。
②構造函數是在用new運算符產生新對象時由系統自動執行,而靜態初始化器則是在它所屬的類載入到內存時由系統調用執行。
③不同於構造函數,靜態初始化器不是方法,沒有方法名、返回值和參數列表。

<3> 最終域:
用final修飾的域,實際上就是Java中的常量。
用final修飾符說明常量時,需要注意以下幾點:
①需要說明常量的數據類型。
②需要同時指出常量的具體取值。
③因為所有類對象的常量成員,其數值都固定一致,為了節省空間,常量通常聲明為static。

<4> 易失域:
如果一個域被volatile修飾符所修飾,說明這個域可能同時被幾個線程所控制和修改,即這個域不僅僅被當前程序所掌握,在運行過程中可能在其他未知的程序操作影響和改變該域的取值。在使用當中應該特別注意。
通常,volatile用來修飾接受外部輸入的域。如表示當前時間的變數將系統的後台線程隨時修改,以保證程序中取到的總是最新的當前系統時間,所以可以把它定義為易失域。

(2)方法:是類的動態屬性,標志了類所具有的功能和操作。小括弧是方法的標志。

<1> 抽象方法:
修飾符abstract修飾的抽象方法是一種僅有方法頭,而沒有具體的方法體和操作實現的方法。使用抽象方法的目的是使所有的子類,對外都呈現一個相同名字的方法,是一個統一的介面。所有的抽象方法,都必須存在於抽象類之中。

<2> 靜態方法:
用static修飾符修飾的方法,是屬於整個類的類方法,不用的是對象或實例的方法。調用這種方法時,應該使用類名作前綴;這種方法在內存中的代碼段將隨著類的定義而分配和裝載,不被任何一個對象專有;只能處理屬於整個類的成員變數。

<3> 最終方法:
用final修飾符修飾的類方法。功能和內部語句不能再更改的方法,不能再被繼承。
注意:所有已被private修飾符限定為私有的方法,以及所有包含在final類中的方法,都被預設地認為是final的。

<4> 本地方法:
用native修飾符聲明其他語言書寫方法體並具體實現方法功能的特殊的方法。這里的其他語言包括C/C++/FROTRAN/匯編等。由於native的方法的方法體使用其他語言在程序外部寫成,所以所有的native方法都沒有方法體,而用一個分號代替。

<5> 同步方法:
如果synchronized修飾的方法是一個類的方法(即static的方法),那麼在被調用執行前,將把系統類Class中對應當前類的對象加鎖。如果synchronized修飾的是一個對象的方法(未用static修飾的方法),則這個方法在被調用執行前,將把當前對象加鎖。Synchronized修飾符主要用於多線程共存的程序中的協調和同步。

二,訪問控制符。
訪問控制符是一組限定類、域或方法是否可以被程序里的其他部分訪問和調用的修飾符。類的訪問控制符只有一個public,域和方法的訪問控制符有四個,分別是public、private、protected、private protected,另外還有一種沒有定義專門的訪問控制符的預設情況。

1, 公有訪問控制符public:
Java的類是通過包的概念來組織的,包氏類的一個鬆散的集合。處於同一個包中的類可以不需要任何說明而方便的互相訪問和引用,而對於不同包中的類,則不行。但當一個類被聲明為public時,他就具有了被其他包中的類訪問的可能性,只要這些其他包中的類在程序中使用import語句引入public類,就可以訪問和引用這個類。
類中被設定為public的方法是這個類對外的介面部分,避免了程序的其他部分直接去操作類內的數據,這實際就是數據封裝思想的體現。
每個Java程序的主類都必須是public類,也是基於相同的原因。
用public修飾的類的域稱為公共域。如果公共域屬於公共類,則它能被所有的其他類所引用。public修飾符會造成安全性的數據封裝性下降,所以一般應減少public域的使用。

2, 預設訪問控制符:
預設訪問控制權規定,該類只能被同一個包中的類訪問和引用,而不可以被其他包中的類使用,這種訪問特性又稱為包訪問性。
同樣道理,類內的域或方法如果美育訪問控制符來限定,也就具有包訪問性。
簡單說,定義在同一個程序中的所有類屬於一個包。

3,私有訪問控制符private :
用private修飾得域或方法只能被該類自身所訪問和修改,而且不能被任何其他類(包括該類的子類)來獲取和引用。private修飾符用來聲明那些類的私有成員,它提供了最高的保護級別。

4,保護訪問控制符protected :
用protected修飾的成員變數可以被三種類所引用:該類自身、與它在同一個包中的其它類、在其他包中的該類的子類。使用protected修飾符的主要作用是允許其他包中該類的子類來訪問父類的特定屬性。

5,私有保護訪問控制符 private protected :
用private protected修飾的成員變數可以被兩種類訪問和引用,一種是該類本身,一種是該類的所有子類。把同一個包內的非子類排除在可訪問的范圍之外,使得成員變數更專於具有明確繼承關系的類,而不是鬆散地組合在一起的包。

I. c#程序設計中訪問修飾符有什麼作用

有作用啊,訪問修飾符可以限定程序訪問的層次。
默認是internal :
C#用多種修飾符來表達類的不同性質。根據其保護級C#的類有五種不同的限制修飾符:
public可以被任意存取;
protected只可以被本類和其繼承子類存取;
internal只可以被本組合體(Assembly)內所有的類存取,組合體是C#語言中類被組合後的邏輯單位和物理單位,其編譯後的文件擴展名往往是「.DLL」或「.EXE」。
protected internal唯一的一種組合限制修飾符,它只可以被本組合體內所有的類和這些類的繼承子類所存取。
private只可以被本類所存取。
如果不是嵌套的類,命名空間或編譯單元內的類只有public和internal兩種修飾。
new修飾符只能用於嵌套的類,表示對繼承父類同名類型的隱藏。
abstract用來修飾抽象類,表示該類只能作為父類被用於繼承,而不能進行對象實例化。抽象類可以包含抽象的成員,但這並非必須。abstract不能和new同時用。下面是抽象類用法的偽碼:
abstract class A
{
public abstract void F();
}
abstract class B: A
{
public void G() {}
}
class C: B
{
public override void F()
{
//方法F的實現
}
}

抽象類A內含一個抽象方法F(),它不能被實例化。類B繼承自類A,其內包含了一個實例方法G(),但並沒有實現抽象方法F(),所以仍然必須聲明為抽象類。類C繼承自類B,實現類抽象方法F(),於是可以進行對象實例化。

sealed用來修飾類為密封類,阻止該類被繼承。同時對一個類作abstract和sealed的修飾是沒有意義的,也是被禁止的。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:944
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:740
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371