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

C語言中陣列的初始化問題

C語言中陣列的初始化問題

一維陣列

Int a[] = {1,2,3,4} //用數去填充

Int a[3] = {1,2,3} //指定大小

Int a[3] = {0} // 都是預設為0

如果不指定初值的話,編譯器會給它指定一個初值,比如int型就是-858993460

二維陣列
int a[][] = {{1,2,3,4},{5,6,7}} //用數去填充 2*4

Int a[2][4] = {{1,2,3,4},{5,6,7}}

Int a[2][4] = {0} //指定其預設值為0

如果不指定初值的話,編譯器會給它指定一個初值,比如int型就是-858993460

程式碼:

#include <stdio.h>

void main(){

       int a[3][3];

       int i =0 ,j = 0 ;

       for(i=0; i<3; i++){

              for(j=0;j<3;j++){

                     printf("%3d",a[i][j]) ;

              }

              putchar('\n');

       }

       int x ;

       printf("%d",x);

}

字元陣列

Char str[] = {“yes”} ; //等同於 char str[] = “yes”

Char str[10] ;如果不給它賦初值,那麼它會預設為“燙“

關於計算char陣列的長度

#include<stdio.h>

#include<string.h>

void main(){

       char str[9]="12345678"; //這裡是“123456789“的話,就會發生陣列越界,會報錯。    printf("%d",strlen(str));  //輸出的是8

}

其實,大小為9char陣列只能存8個字元,因為最後要留一個來填充‘\0’,即字元陣列的結束標誌。

相關推薦

C語言陣列初始

    這是很基礎的東西,但基礎的重要性不言而喻,我敢肯定這個知識點我肯定曾經瞭解過,但現在,我不敢確定,由此可見紀錄的重要性,這世界沒有什麼捷徑,找對方向,然後不停重複.所以從今天開始,我會比較詳細的紀錄這些比較小的知識點,其實還是有不少有意思的地方的.     寫這篇文章

C語言初始問題

經常在C語言工程中,尤其是比較大的程式,執行過程中會出現由於記憶體或堆疊導致的各種問題,輸出錯誤或執行崩潰~~ 1.字串陣列的初始化 (1) char str[10]=""; (2) char str[10]={’\0’}; (3) char str[10]; str[0]=’\0’;

C語言指標初始和常規運算

1. 指標初始化注意須知 <1>指標變數和普通變數一樣,外部或者靜態指標變數若未初始化,則被自動初始化為NULL,它的值為0(ASCII字元NULL的程式碼)。 <2>可以

C語言陣列初始問題

C語言中陣列的初始化問題 一維陣列 Int a[] = {1,2,3,4} //用數去填充 Int a[3] = {1,2,3} //指定大小 Int a[3] = {0} // 都是預設為0 如果

C語言的未初始的數組的值為什麽是隨機的

urn turn 隨機 說明 tin main ont 情況 同學 突然想起來前幾天同學問我為什麽沒有初始化的數組的值是隨機的,發現這個困惑自己也是存在的,所以自己總結的心得. 1. 首先,並不是所有未初始化的數組的值都是隨機的.對於沒有初始化的數組,分兩種情況:  

c語言裡面變數初始問題與Java區別

C語言中,定義區域性變數時如果未初始化,則值是隨機的,為什麼? 定義區域性變數,其實就是在棧中通過移動棧指標來給程式提供一個記憶體空間和這個區域性變數名繫結。因為這段記憶體空間在棧上,而棧記憶體是反覆使用的(髒的,上次用完沒清零的),所以說使用棧來實現的區域性變數定義時如果不顯式初始化,值

C++ 類物件陣列初始

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

C語言陣列使用負數值的標記

·引 對陣列的認知 在c語言中,我們經常使用的一個結構便是陣列,在最開始學習陣列的時候,它被描述成這樣(以一維二維陣列為例):一維陣列是若干個數連續排列在一起的集合,我們可以通過0-N的標記(N為陣列的長度)來訪問每一個元素。二維陣列則是一維陣列的集合。所以在最開始我們對二維陣列的概念是這樣的: 然後

C語言陣列與指標的區別

本文是對《C語言深度剖析》一書內容的拓展,在看這本書的時候解了很多我之前的一些困惑,故在此記錄。對陣列的引用總是可以寫成對指標的引用,而且確實存在一種指標和陣列的定義完全相同的上下文環境。 但是指標和陣列還是在本質上是不一樣的。指標就是指標,指標變數在32位的系統下面是4B

c語言陣列名與指標的區別與聯絡

今天在工作中定義陣列的時候習慣性的使用char型指標後直接等於字串,但在編譯通過後執行的時候產生了段錯誤,因為著急就(整個函式程式碼還是比較多的)沒仔細看程式碼,只是抱著試試看的心態,將定義換成了陣列後等於字串的形式,居然沒有在出現段錯誤,感到很奇怪(剛乾程式設計師沒多久,

C語言全域性未初始資料段分析

前言:         在分析C語言全域性未初始化變數時,發現在目標檔案中全域性未初始化變數並不是直接放在bss段中。         再後來發現在兩個.c檔案中定義同名的全域性變數,連結時居然沒有

c語言陣列名代表陣列首地址,它的值在執行期間可以改變嗎?

陣列名是陣列的首地址,就是陣列中第一個元素的地址,是常量。常量是不能出現在賦值號=左邊作為左值的。樓上的都沒有解釋清楚,說陣列名就是指標是錯誤的,指標是變數,是用來儲存變數地址值的變數,而陣列名是常量。一般情況下宣告一個數組,比如char a[10];之後,陣列名a都是數組的首地址,是一個地址常量。但是在函式

C語言--結構體初始

一、結構體基本初始化方法 定義 struct Mystruct { int first; double second; char* third; float four; }; 1、方法一:定義時賦值 賦值時注意定義時各個成員的順序,不能錯位。

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

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

C語言結構體初始的四種方法

定義 struct InitMember { int first; double second; char* third; float four; }; 方法一:定義時賦值 struct InitMember t

c++類物件陣列初始的幾種方法

    類物件陣列初始化     如有一個如下類:    class EquipmentPiece {    private:        int IDNumber;    public:        EquipmentPiece(int IDNumber) : IDNumber(IDNumber) {

C++ new 動態陣列初始

問題:紅字部分的程式碼是否有問題? 程式碼是沒有問題的,考慮的是new申請的記憶體有沒有初始化? 在這段程式碼中,有無初始化是沒有關係的,因為str字串中已含有字串結束標誌。 inline mystring::mystring( const char* str ) {

陣列初始的問題

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

C語言結構體初始和結構體指標

結構體初始化 #include <stdio.h> //結構體的宣告和定義方法 //1.宣告和定義分離 struct weapon{ char name[20]; in

Linux GNU C結構體陣列初始示例

實然心血來潮,想學習一下結構體陣列的初始化方面的知識。 以下是GCC實然心血來潮,想學習一下結構體陣列的初始化方面的知識。特有的陣列初始化的風格: // 陣列賦值另一種方式,但只在gcc下編譯通過,g++不能 enum { AAA = 0, BBB, CCC,