1. 程式人生 > >棧中陣列初始化的問題

棧中陣列初始化的問題

本處討論的是棧中定義的陣列,全域性或者static陣列和本文無關。

函式中定義好一個數組後,數組裡面的內容到底是自動被初始化為0呢?

還是一個不確定的數值?這個需要具體分析。

在函式中定義的陣列是在棧中的,棧中定義的陣列假如未初始化則,陣列

的內容是不確定。但是如果初始化過了,那陣列中的元素要不就是0,要不

就是初始化好的數值。

例如:
char a[3]

char b[3] = {1}

char c[3] = {1,2,3}

陣列a未初始化則a中的元素值為不確定的值

陣列b初始化了但是未將陣列中的所有陣列初始化,所以b[1] = 1, b[2] =0,

b[3] = 0。注意,此時陣列中的剩餘元素會被自動初始化為0,陣列元素數值

是可以確定的,而且利用這一特性可以用語句b[100] = {0};將陣列中100個元

素全部初始化為0!!!

陣列c已將陣列中所有的元素都初始化了,那數值當然可以確定了。

此外假如用字串初始化也是同樣的結果。

VC++6.0驗證截圖如下

程式碼中的注視表示變數當時執行時候的記憶體地址,可證實前面的描述!

相關推薦

陣列初始的問題

本處討論的是棧中定義的陣列,全域性或者static陣列和本文無關。 函式中定義好一個數組後,數組裡面的內容到底是自動被初始化為0呢? 還是一個不確定的數值?這個需要具體分析。 在函式中定義的陣列是在棧中的,棧中定義的陣列假如未初始化則,陣列 的內容是不確定。但是如果初始化過

JAVA陣列初始時用new與不用new有區別嗎

不同於String類,String由於實現了常量池 所以new 和不new 有區別:new的話,引用變數指向堆區。不new的話,引用變數指向常量池。對於陣列的定義,初始化時用new與不用new 沒區別,

Java一維陣列和二維陣列初始

陣列屬於引用資料型別,在使用前必須初始化,否則會報NullPointerException(空指標異常:執行時異常) 一維陣列初始化: 動態初始化:(宣告並開闢陣列) 資料型別[ ] 陣列名稱=new 資料型別[長度] int[ ] data=new

C++靜態初始陣列與動態初始陣列

靜態初始化的陣列的長度必須是在程式中確定的常數,不能是由使用者輸入的變數例子:int a[10];//正確Student stud[10];//正確:Student是一個學生類int n;cin>>n;int a[n];//錯誤int n;cin>>n

java陣列初始賦初值

方法一int[] vis1;//宣告未初始化 vis1=new int[100];//定義佔用空間大小(100個int) for(int i=1;i<=5;i++) { vis1[i]=i;//進行賦值 } for(int i=1;i<100;i+

c++ 實現順序類(初始,入,退。讀頂元素以及順序輸出頂指標與的元素

/* 定義順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素 */ #include<iostream> using namespace std; // template <class T> class sq_Stack {

Golang 引用庫含有初始代碼時如何引用

usr nbsp 博文 str 符號 imp oca all 補充 簡單點說吧,要在引用庫前加‘_‘符號 給出示例 //foo.go // /usr/local/go/pkg/src/foo/foo.go package foo import "fmt" type Foo

關於的動態初始的問題

cin dpx gem 關於 bgp store drl gin 問題 5JKe俁魄8司竿諧僥8http://shufang.docin.com/qpk277 獵0躥辭o2諧返糜4http://www.docin.com/dmjy2463 2臀酉頗4咳fv斃啥http:

java類初始順序

log 初始化 靜態變量 clas bsp 類成員變量 art 類成員 學習 1)父類靜態資源加載:靜態變量、靜態方法、靜態初始化塊   按靜態資源的定義順序來加載 2)子類靜態資源加載:同上 3)父類成員變量、成員方法、初始化塊 4)父類構造器 5)子類成員變量、成員方法

Java程序初始的順序

int() 測試 subclass ini 透明 turn views 是我 輸出 1,在一個類的內部(不考慮它是另一個類的派生類):很多人認為,類的成員變量是在構造方法調用之後再初始化的,先不考慮這種觀點的正確性,先看一下下面的代碼: [java] view pl

C++初始參數列表

圖片 .com 包含 自然 cout csharp pan 初始化列表 arp c++中以下幾種情況的變量的初始化不可以寫在構造函數裏,而是要寫在初始化參數列表中 1.const常量 class AA { public : const int num; publi

Mybatis在spring容器初始過程

tsql tor 懶加載 alt onf mes text batis mybatis 由servlet容器調用容器啟動監聽器 spring的applicationContext刷新 實例化所有的單例(非懶加載的) beanNames:所有的單例(非懶加載的)的id,

Java HashMap 初始時賦值

lec SM 解決 道理 test ack 增加 數據結構 解決辦法 1、HashMap 初始化的文藝寫法HashMap 是一種常用的數據結構,一般用來做數據字典或者 Hash 查找的容器。普通青年一般會這麽初始化:HashMap<String, S

oracle有關初始引數檔案的幾個檢視對比

涉及oracle中有關初始化引數檔案的幾個檢視主要有:v$paraemter,v$parameter2,v$system_parameter,v$system_parameter2,v$spparameter 主要區別如下: 一、涉及內容比較 v$paraemter,v$parameter2檢視主要是查

物件陣列初始問題

物件陣列不會自動初始化,所以要對每個元素初始化。 如: JField []txt=new JField[4]; ------這裡只是new了一個物件陣列,並沒有初始化陣列元素 txt[0]=new JField();-------------因為物件陣列不會自動初始化,所以要對每個元素初

用vector物件代替陣列——使用陣列初始vector物件,vector的拷貝方式說明。

在看到c++primer的第三章,3.5.2節練習時,碰到了一個問題如下: 將剛剛建立的陣列拷貝給另一個數組。利用vector 重新寫此程式完成類似的功能。 然後我就在網上尋找答案,同時也學習了很多拷貝的方法   一、初始化構造時拷貝 vector<int>

C++ 類物件陣列初始

如何給類中定義了帶有引數的建構函式的物件陣列賦值 class A { public: A(){}//無參建構函式0 A(int i){}//有參建構函式1 A(int i,int j){}//有參建構函式2 }; int main() { A a,b[5];

Java初始塊和構造器的執行順序

我們都知道java中不但有構造器,還有初始化塊和靜態初始化塊的概念,今天我們就來看看他們之間的執行順序是怎樣的。 我們來看一個例子: package test; class Root { static { System.out.println("Root的靜態初始化塊"); }

Go語言 陣列初始和基本操作

package main import "fmt" func main() { // 陣列同一型別的集合 var arr [50]int // 1 賦值 // 運算元組,下標從0開始,索引從0到len()-1 for i := 0; i < len(arr); i++ { a

[Xcode10 實際操作]三、檢視控制器-(8)在Storyboard設定初始檢視控制器

本文將演示如何設定故事板的初始檢視控制器。 開啟自動生成的預設故事板【Main.storyboard】 在開啟的故事板中,系統已經生成了一個空白的檢視控制器。 控制器左側的右向箭頭【→】,表示當前的控制器,是故事板的初始控制器。 接著開啟檢查器面板。在故事板元素列表中,選擇當前檢視控制器的根檢視。