c語言陣列輸出個數問題,一個c語言陣列輸出個數問題

時間 2021-08-30 09:46:49

1樓:池綠柳穆丙

樓上的說的很好,只是有點錯誤:

定義到main函式之外為全域性變數,並不是存放在堆區,而是放在全域性區。

一個由c/c++編譯的程式佔用的記憶體分為以下幾個部分

1、棧區(stack)—

由編譯器(compiler)自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。

2、堆區(heap)

—一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**。注意它與資料結構中的堆是兩回事,分配方式倒是類似於連結串列,呵呵。

3、全域性區(靜態區)(static)—,全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,

未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。

-程式結束後有系統釋放

4、文字常量區

—常量字串就是放在這裡的。程式結束後由系統釋放

5、程式**區—

存放函式體的二進位制**。

定義到main函式之內為區域性變數,存放在棧區;定義到main函式之外為全域性變數,存放在全域性區。對於一個程式而言,棧區大小是由系統分配的,如果變數佔用空間過大則會出現棧溢位的問題。

2樓:蒲桂花賀賦

一個由c/c++編譯的程式佔用的記憶體分為以下幾個部分

1、棧區(stack)—

由編譯器(compiler)自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。

2、堆區(heap)

—一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**。注意它與資料結構中的堆是兩回事,分配方式倒是類似於連結串列,呵呵。

3、全域性區(靜態區)(static)—,全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,

未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。

-程式結束後有系統釋放

4、文字常量區

—常量字串就是放在這裡的。程式結束後由系統釋放

5、程式**區—

存放函式體的二進位制**。

定義到main函式之內為區域性變數,存放在棧區;定義到main函式之外為全域性變數,存放在堆區,對於一個程式而言,棧區大小是由系統分配的,如果變數佔用空間過大則出現定義變數失敗,建議用堆區。

你可以將陣列大小改小一下放到main中試試,沒問題的。

3樓:

區域性變數會在執行時建立,而這個陣列太大了,已經超過了vc++的預設堆疊段的大小,所以會出現堆疊溢位的資訊。

而在函式外面定義的全域性變數是佔用程式檔案空間的,也就是說,在編譯連結時,全域性變數就已經在程式檔案中分配好了空間並完成了初始化。而程式檔案可以很大,所以不會出錯。

c語言字串陣列輸出字串個數問題

4樓:遷苢

char str=

「ahdhdhdhxjxjxhdgxvchfjjfxhxbbxxbxbcbbcbxbx\0」;

int i=0;

for(i=0;i<13143731168;i++)printf(「%d」,i)

或者char arr="ghhjkyfffghuihfffgg";

char *p=arr;

while(*p != '\0')

prntf(「%d」,p-arr);

這是全網最簡潔**了,通俗易懂。

給個贊?老鐵們。

5樓:董彩榮越未

strlen是遍歷每個字元,直到遇到末尾的結束符('\0')結束,所以能計數。

但month定義為字串陣列,本身是陣列,陣列沒有結束符,month[j++]是某一個字串,所以month[j++]!=0這句是沒有任何意義的。陣列的長度在執行時是未知的(c語言不會判斷陣列越界)。

這也就是大多數以陣列為引數的函式都還要另外提供一個長度引數len的原因。

6樓:阿四哥

c語言字串的學習,輸入指定字串,並且計算字串的位數

c語言字串陣列輸出字串個數問題

7樓:陽光的雷咩咩

strlen是遍歷每個字元,直到遇到末尾的結束符('\0')結束,所以能計數。

但month定義為字串陣列,本身是陣列,陣列沒有結束符,month[j++]是某一個字串,所以month[j++]!=0這句是沒有任何意義的。陣列的長度在執行時是未知的(c語言不會判斷陣列越界)。

這也就是大多數以陣列為引數的函式都還要另外提供一個長度引數len的原因。

C語言問題。定義二維陣列,C語言問題。定義一個二維陣列

ok洛陽水席 include int main sum 0 for i 0 i 5 i return 0 樓主基本沒有大錯誤,只是不夠仔細,用來儲存特定值的變數使用前一定要初始化,如本例中的最大值,最小值,下標,都是必須初始化的!整型與整型運算會得到整型,1 2 0,5 4 1 系統會捨去小數部分。...

c語言問題,一個c語言問題 !!

書寫要規範 include void main 第一和第二個for 迴圈對 a i j 賦值 即對a 1 1 a 1 2 一直到 a 5 5 第三和第四個for 列印二維陣列裡的內容 即你剛賦進去的值 這段 生成了一個6階的單位矩陣,並顯示出來。include 標頭檔案 void main 主函式 ...

c語言每輸出數換行,C語言,每輸出5個數換行

小夏在深圳 加一個計數的變數,每次找到目標時計數加一,被5整除時換行。源 如下 include int main 擴充套件資料1 printf 函式在碰到 n 時,並沒有直接輸出字元 與字元 n 而是將它們看作一個換行標記,執行了換行操作,以使後面的輸出列印在新的一行。2 printf函式的返回值是...