2016-09-23 47 views
2

任何人都可以請讓我知道以下兩條c語句在初始化,table和其他任何方面的區別。以下兩條c語句之間的區別

注意:兩者都是全局變量

unsigned int *table[100] = {NULL}; 

static unsigned int *table[100] = {NULL}; 
+0

請注意,'... = {NULL}'*只會將數組的第一個元素*初始化爲NULL。 *所有其他元素被初始化爲「0」,兩者不一定需要相同,這取決於使用中的C實現。 – alk

+0

@ P.J.Meisch:我覺得,標題是重複的,但不是內容。 – alk

+0

引用我以前的評論:http://stackoverflow.com/q/9894013/694576 – alk

回答

1
  1. table是在兩個聲明unsingned int類型的指針數組。
  2. 區別在於static數組的可見性僅限於您聲明此數組的文件。

該鏈接將幫助

What does "static" mean?

0

相似度:

  1. 兩者都是100個的整指針數組。
  2. 即使您未初始化,它們也會被初始化爲NULL,因爲它們被聲明爲全局的 。
  3. 兩者都將存儲到數據部分。

差異:

  1. 範圍:第一個將有哪些會從你的程序中訪問任何地方 全球範圍內。第二個將文件範圍意味着 你不能訪問這些指針形式的其他文件。

請注意,如果您同時聲明瞭兩個文件,那麼靜態聲明將獲得最高優先級。即賦予表指針任何值將獲得靜態初始化。

+1

請參閱我對OP的評論:http://stackoverflow.com/questions/39653161/difference-between-below-two-c-語句#comment66609677_39653161 – alk

0
unsigned int *table[100] = {NULL}; 

table是指針的數組unsingned int和初始化整個數組元素NULL

static unsigned int *table[100] = {NULL};//declared as static means initialized only once 

table是指針的數組static unsingned int和初始化整個數組元素NULL

+0

請參閱我對OP的評論:http://stackoverflow.com/questions/39653161/difference-between-below-two-c-statements#comment66609677_39653161 – alk

+0

@alk先生,但其餘元素隱含NULL。我是對還是錯? –

+0

不一定。請查看我剛添加爲OP(另一個)評論的鏈接。 – alk