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}};
        对象数组:只声明不初始化,类定义中必须有一个显式的无参构造函数。
二:字符串
        与数组不同的是,字符串只能在声明语句中进行初始化。而且指针形式与数组形式的初始化机制在存储方式上是完全不同的。
#include <iostream.H>
void main()
{char str[]="abcdefg"; //char *str="abcdefg";
str[5]='5';
 cout<<str<<endl;
}
以上测试程序,如果是str[]程序编译运行都正常,如果换做*str,程序运行会发生异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值