課程
/后端開發(fā)
/C
/C語言入門
第五行sum=0有什么用?刪除不是也可以運行
2015-05-11
源自:C語言入門 4-8
正在回答
1. 變量的定義、聲明
變量的聲明有兩種情況:
一種是需要建立存儲空間的。例如:int? a。在聲明的時候就已經建立了存儲空間。這種聲明是"定義性聲明(defining declaration)",即我們平時所說的“定義”。
另一種是不需要建立存儲空間的,只是告訴編譯器某變量已經在別處定義過了。例如:extern int a。其中,變量a是在別處定義的。這種聲明是"引用性聲明(referncing declaration)",即我們平時所說的“聲明”。
?
從廣義的角度來講,聲明中包含著定義,但是并非所有的聲明都是定義。即,定義性聲明既是定義又是聲明,而引用性聲明只是聲明。例如:int a。它既是聲明,同時又是定義。然而對于 extern int a 來講,它只是聲明不是定義。
一般的情況下我們常常這樣敘述,把建立空間的聲明稱之為”定義”,而把不需要建立存儲空間的稱之為”聲明”。很明顯這里指的聲明是范圍比較窄的,也就是說引用性的聲明。
例子:
int a; //定義性聲明,分配存儲空間,初值不確定
int b = 0; //定義性聲明,分配存儲空間,賦初值
extern int c; //引用性聲明,不分配存儲空間,只是告訴編譯器這個變量已經在別處定義過了
2. 函數的定義、聲明
函數的定義和聲明也是一樣,定義需要分配存儲空間;聲明只是告訴編譯器這個函數已經在別處定義過了。
函數的定義和聲明比較好區(qū)分。有函數體的即為定義,不帶函數體即為聲明。
//聲明
double sqrt(double x);
//定義
double sqrt(double x)
{
????????? return x*x;
}
3. 定義與聲明的區(qū)別
(1)是否需要分配存儲空間。
(2)在一個作用域中可以重復聲明,但不能重復定義。這是由(1)決定的,可以重復幾次告訴編譯器某個變量、函數已經在別處定義了,但不能重復多次地讓編譯器為同一個變量、函數分配不同的存儲空間。
---------------------------------------------------------------------------------------------------------------------------
所以sum=0;是將0賦值給sum;如果不賦值,sum的值不確定,運行的結果也不可知
qq_北落師門_0 提問者
初始化sum
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
2 回答這是運行成功的 我想問一下 第五行為什么不可以刪掉呢
3 回答我已經把第五行刪掉了,可為什么還是不行。
3 回答為什么評論區(qū)這個也是錯的? 刪除第五行,在第六加最后幾(int)就行
7 回答為什么我要把第五行刪掉才行
1 回答為什么第五行的double不可以改成int
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-05-11
1. 變量的定義、聲明
變量的聲明有兩種情況:
一種是需要建立存儲空間的。例如:int? a。在聲明的時候就已經建立了存儲空間。這種聲明是"定義性聲明(defining declaration)",即我們平時所說的“定義”。
另一種是不需要建立存儲空間的,只是告訴編譯器某變量已經在別處定義過了。例如:extern int a。其中,變量a是在別處定義的。這種聲明是"引用性聲明(referncing declaration)",即我們平時所說的“聲明”。
?
從廣義的角度來講,聲明中包含著定義,但是并非所有的聲明都是定義。即,定義性聲明既是定義又是聲明,而引用性聲明只是聲明。例如:int a。它既是聲明,同時又是定義。然而對于 extern int a 來講,它只是聲明不是定義。
?
一般的情況下我們常常這樣敘述,把建立空間的聲明稱之為”定義”,而把不需要建立存儲空間的稱之為”聲明”。很明顯這里指的聲明是范圍比較窄的,也就是說引用性的聲明。
?
例子:
int a; //定義性聲明,分配存儲空間,初值不確定
int b = 0; //定義性聲明,分配存儲空間,賦初值
extern int c; //引用性聲明,不分配存儲空間,只是告訴編譯器這個變量已經在別處定義過了
?
2. 函數的定義、聲明
函數的定義和聲明也是一樣,定義需要分配存儲空間;聲明只是告訴編譯器這個函數已經在別處定義過了。
函數的定義和聲明比較好區(qū)分。有函數體的即為定義,不帶函數體即為聲明。
?
例子:
//聲明
double sqrt(double x);
?
//定義
double sqrt(double x)
{
????????? return x*x;
}
?
3. 定義與聲明的區(qū)別
(1)是否需要分配存儲空間。
(2)在一個作用域中可以重復聲明,但不能重復定義。這是由(1)決定的,可以重復幾次告訴編譯器某個變量、函數已經在別處定義了,但不能重復多次地讓編譯器為同一個變量、函數分配不同的存儲空間。
---------------------------------------------------------------------------------------------------------------------------
所以sum=0;是將0賦值給sum;如果不賦值,sum的值不確定,運行的結果也不可知
2015-05-11
初始化sum