計算機二級考試C++基礎:P3-數(shù)據(jù)結構

字號:

數(shù)組指針字符串,對象與指針。
    先看兩個題目:
    (第1題,會讓你基本上對字符串跟數(shù)組的差別有所了解;第2題會讓你了解C++的一些存儲機制)
    第1個:
    (1)char c[]="12345\0\0"; //(2) int c[]={1,2,3,4,5};
    (1)char *p=c;//(2) int *p=c;
    c=p=__
    &c==&p?1:0=__
    c[0]=*c=__
    &c[0]=&(*c)=__
    c+2=&C[2]=__
    sizeof(c)=__
    sizeof(p)=__
    把(1)換成(2)時輸出結果又是怎樣?
    第2個:
    例1)void main()
    {char s[]="12345"; //char *s="12345";
    *s=’a’;
    cout <     }
    程序會報錯嗎?
    例2)const char str1[]="aaa";
    char str2[]="aaa";
    const char *str3="aaa";
    char *str4="aaa";
    if(str1==str2) cout < <"12 OK" <     if(....換成其它的).................
    請問str1,str2,str3,str4哪兩個會相等。
    一:數(shù)組
    一維數(shù)組:聲明初始化形式有三種:給定個數(shù),逐個賦值;給定個數(shù),部分賦值;不給個數(shù),全部賦值。
    例:int a[8]={1,2,3,0,0,0,0,0}; int a[8]={1,2,3,,}; int a[]={1,2,3,,,,,};
    二維數(shù)組:聲明初始化形式跟一維類似:
    int b[2][3]={ {1,2,3},
    {4,5,6}};
    [ 或int b[2][3]={1,2,3,4,5,6};]
    或:將int b[2][3]換為int b[][3],
    或:int [3][3]={{1,2,3};
    {4,5,6}};
    對象數(shù)組:只聲明不初始化,類定義中必須有一個顯式的無參構造函數(shù)。
    二:字符串
    與數(shù)組不同的是,字符串只能在聲明語句中進行初始化??荚?大提示指針形式與數(shù)組形式的初始化機制在存儲方式上是完全不同的。
    #include
    void main()
    {char str[]="abcdefg"; //char *str="abcdefg";
    str[5]=’5’;
    cout<    }
    以上測試程序,如果是str[]程序編譯運行都正常,如果換做*str,程序運行會發(fā)生異常。