數(shù)組指針字符串,對(duì)象與指針。
先看兩個(gè)題目:
(第1題,會(huì)讓你基本上對(duì)字符串跟數(shù)組的差別有所了解;第2題會(huì)讓你了解C++的一些存儲(chǔ)機(jī)制)
第1個(gè):
(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)時(shí)輸出結(jié)果又是怎樣?
第2個(gè):
例1)void main()
{char s[]="12345"; //char *s="12345";
*s=’a’;
cout <    }
程序會(huì)報(bào)錯(cuò)嗎?
例2)const char str1[]="aaa";
char str2[]="aaa";
const char *str3="aaa";
char *str4="aaa";
if(str1==str2) cout < <"12 OK" <    if(....換成其它的).................
請(qǐng)問(wèn)str1,str2,str3,str4哪兩個(gè)會(huì)相等。
一:數(shù)組
一維數(shù)組:聲明初始化形式有三種:給定個(gè)數(shù),逐個(gè)賦值;給定個(gè)數(shù),部分賦值;不給個(gè)數(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}};
對(duì)象數(shù)組:只聲明不初始化,類定義中必須有一個(gè)顯式的無(wú)參構(gòu)造函數(shù)。
二:字符串
與數(shù)組不同的是,字符串只能在聲明語(yǔ)句中進(jìn)行初始化??荚?大提示指針形式與數(shù)組形式的初始化機(jī)制在存儲(chǔ)方式上是完全不同的。
#include
void main()
{char str[]="abcdefg"; //char *str="abcdefg";
str[5]=’5’;
cout<    }
以上測(cè)試程序,如果是str[]程序編譯運(yùn)行都正常,如果換做*str,程序運(yùn)行會(huì)發(fā)生異常。
    
   
                
              先看兩個(gè)題目:
(第1題,會(huì)讓你基本上對(duì)字符串跟數(shù)組的差別有所了解;第2題會(huì)讓你了解C++的一些存儲(chǔ)機(jī)制)
第1個(gè):
(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)時(shí)輸出結(jié)果又是怎樣?
第2個(gè):
例1)void main()
{char s[]="12345"; //char *s="12345";
*s=’a’;
cout <
程序會(huì)報(bào)錯(cuò)嗎?
例2)const char str1[]="aaa";
char str2[]="aaa";
const char *str3="aaa";
char *str4="aaa";
if(str1==str2) cout < <"12 OK" <
請(qǐng)問(wèn)str1,str2,str3,str4哪兩個(gè)會(huì)相等。
一:數(shù)組
一維數(shù)組:聲明初始化形式有三種:給定個(gè)數(shù),逐個(gè)賦值;給定個(gè)數(shù),部分賦值;不給個(gè)數(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}};
對(duì)象數(shù)組:只聲明不初始化,類定義中必須有一個(gè)顯式的無(wú)參構(gòu)造函數(shù)。
二:字符串
與數(shù)組不同的是,字符串只能在聲明語(yǔ)句中進(jìn)行初始化??荚?大提示指針形式與數(shù)組形式的初始化機(jī)制在存儲(chǔ)方式上是完全不同的。
#include
void main()
{char str[]="abcdefg"; //char *str="abcdefg";
str[5]=’5’;
cout<
以上測(cè)試程序,如果是str[]程序編譯運(yùn)行都正常,如果換做*str,程序運(yùn)行會(huì)發(fā)生異常。

