首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

C++基础解析三十三

2008-12-15 
P3-数据结构

    数组指针字符串,对象与指针。

  先看两个题目:

  (第1题,会让你基本上对字符串跟数组的差别有所了解;第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 < <s < <endl;

  }
  程序会报错吗?

  例2)const char str1[]="aaa";

  char str2[]="aaa";

  const char *str3="aaa";

  char *str4="aaa";

  if(str1==str2) cout < <"12 OK" < <endl;

  if(....换成其它的).................

  请问str1,str2,str3,str4哪两个会相等。

  一:数组

  一维数组:声明初始化形式有三种:给定个数,逐个赋值;给定个数,部分赋值;不给个数,全部赋值。

  例:int a[8]={1,2,3,0,0,0,0,0}; int a[8]={1,2,3,,}; int a[]={1,2,3,,,,,};

  二维数组:声明初始化形式跟一维类似:

  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}};

  对象数组:只声明不初始化,类定义中必须有一个显式的无参构造函数。

  二:字符串

  与数组不同的是,字符串只能在声明语句中进行初始化。指针形式与数组形式的初始化机制在存储方式上是完全不同的。 3COME文档编辑

  #include <iostream.H>

  void main()

  {char str[]="abcdefg"; //char *str="abcdefg";

  str[5]=’5’;

  cout<<str<<endl;

  }

  以上测试程序,如果是str[]程序编译运行都正常,如果换做*str,程序运行会发生异常。

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行