P3-数据结构
来源:优易学  2011-12-8 11:32:50   【优易学:中国教育考试门户网】   资料下载   IT书店
  数组指针字符串,对象与指针。
  先看两个题目:
  (第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}};
  对象数组:只声明不初始化,类定义中必须有一个显式的无参构造函数。
  二:字符串
  与数组不同的是,字符串只能在声明语句中进行初始化。青年人网提示指针形式与数组形式的初始化机制在存储方式上是完全不同的。
  #include <iostream.H>
  void main()
  {char str[]="abcdefg"; //char *str="abcdefg";
  str[5]=’5’;
  cout<<str<<endl;
  }
  以上测试程序,如果是str[]程序编译运行都正常,如果换做*str,程序运行会发生异常。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训