C類指標作用域和區域性變數的問題,C有關區域性變數及其作用域和生存期的問題

2022-06-09 05:51:36 字數 1527 閱讀 9856

1樓:諸曲

這個問題是因為你使用了區域性作用域的類的地址

不是像你說的全部初始化了

而是由於區域性作用域中的manager a脫離了作用域後被自動析構了

在原來位置上的值都是未定義的

相當於你在main函式中定義一個int,但不給它賦值,你除錯的時候你就會發現這個int的值很奇怪

解決的方法就是用new申請分配記憶體塊

既然你說基類是純虛的,那麼就用new manager

直接分配你想要操作類的記憶體

這樣改函式

//manager a( number , name , telephone , salary );這刪掉

if( p != null )

至於你後面那個p=&a我就沒看懂了,既然是連結串列,一個是儲存自己的東西,一個當然要儲存

下一個單位的地址,具體的實現你也沒貼出來,所以我只好給你說你只有這樣申請記憶體才不會出現未定義情況

c有關區域性變數及其作用域和生存期的問題

2樓:匿名使用者

a:不一定,假如有某個函式內用的區域性變數與全域性變數名稱相同,此時全域性變數就不起作用了

b:正確的,所以在某個自定義函式中定義了一個靜態變數後,就算你賦了初值,在第二次呼叫該函式是,這個靜態變數的值一定是上一次執行後的值,不會再被初始化

c:錯的,都是區域性變數。

d:錯了一半,auto變數初值隨機,但是靜態變數的初值為0

j**a中類變數、例項變數和區域性變數有何區別?

3樓:

類變數:

比較特殊的例項變數,用static修飾的,一個類共用這個變數,所有由這類生成的物件都共用這個變數,類裝載時就分配儲存空間。一個物件修改了變數,則所以物件中這個變數的值都會發生改變。

例項變數:

從屬於類,由類生成物件時,才分配儲存空間,各物件間的例項變數互不干擾,能通過物件的引用來訪問例項變數。

區域性變數:

方法中或者某區域性塊中宣告定義的變數或方法的引數被稱為區域性變數

關於c++全域性變數和區域性變數的問題!!

4樓:匿名使用者

區域性變數:在一個函式內部定義的變數就是區域性變數。

作用範圍:只侷限在定義它的本函式體之內,即只有在該函式體內才能使用該變數,而在此函式之外是不能使用它們的。

由於在不同函式體內定義的變數只在它所在的函式體內部有效,所以,不同函式體中可以定義相同名字的變數,但它們代表不同的物件,互不干擾。它們在記憶體中佔用不同的記憶體單元。

函式的形參也是該函式的區域性變數,其他函式不能呼叫。

有效作用範圍:從定義該變數的位置開始到本程式檔案的結束。

***在同一個檔案中,若全域性變數和區域性變數同名,則在區域性變數的作用範圍內,全域性變數不起作用。

見下圖:

5樓:倒黴熊

因為main函式中有 定義這個區域性變數n,所以 main中使用的n是區域性變數的n,而不是全域性變數的n。

全域性變數和區域性變數有什麼區別?是怎麼實現的

1 全域性變數的作用用這個程式塊,而區域性變數作用於當前函式 2 前者在記憶體中分配在全域性資料區,後者分配在棧區 3 生命週期不同 全域性變數隨主程式建立和建立,隨主程式銷燬而銷燬,區域性變數在區域性函式內部,甚至區域性迴圈體等內部存在,退出就不存在 4 使用方式不同 通過宣告後全域性變數程式的各...

C 中指標命名的規則問題,我想問問c 變數命名規則的問題

lp是舊時的稱呼了,即long pointer,表示是個32位地址指標,p現在就只表示指標。現在兩種都在用,因為大部分都是32位機的,所有用哪個一般沒有區別。沒有區別,在於個人習慣 沒有區別。你的指標也可以是a.b.只是你定義的指標變數的名字不一樣而已 我想問問c 變數命名規則的問題 1 識別符號必...

c 類中的私有成員變數有什麼作用

私有成員 抄變數,即定義在baiprivate區域的成員變數du。對於本類成員函式來說,該zhi變數與其dao它成員變數並無區別。使用上和作用上也都相同。對於通過物件訪問,私有成員變數無法通過物件訪問。通過這一方式可以起到保護一些資料不被隨意修改的效果。另外,在出現繼承時,基類的私有成員變數不會被繼...