數(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ā)生異常。
先看兩個題目:
(第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" <
請問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ā)生異常。