c ++Primer学习笔记之一

 

2011-8-29 09:28  周一  晴

 

2.3.3 定义对象

   1 初始化

    两种初始化的形式:直接初始化和复制初始化。直接初始化将初始化值放在括号“()”里来初始化;复制初始化用等号“=”来初始化。

  初始化与赋值的区别:

 初始化:创建变量并给它赋值;

赋值: 擦除对象的当前值并用新值来代替,这是因为当定义一个对象时它会默认的赋予其一个默认值。

 

2.3.5 声明和定义

  变量的定义:

       为变量分配存储空间,指定初值。在一个程序中,变量有且仅有一个定义。

  声明:

   用于向程序表明变量的类型和名字。定义也是声明:当定义变量时本身就声明了它的类型和名字。

  关键字extern 可以用来声明变量而不是定义变量。使用extern声明变量时包括extern关键字、变量类型、变量名。extern声明不分配存储空间,只是说明变量已经在其它地方定义,变量可以声明多次,但只能定义一次。

   若在使用extern的同时时也给变量赋值,则变为定义,此时要分配存储空间,之后就不能再使用此变量名再定义了,也不能再初始化了。

 

2.4 const限定符

 1 const 用来定义一个常量,通过const定义的变量只能在本文件中使用,其它文件不能引用,若想在其它文件中使用可以在定义时使用关键字 extern。

 

2.9 编写自己的头文件

1 头文件用于声明而不是用于定义,其中不能有变量或函数的定义。

2 const变量为常量表达式时,应放在头文件中;若不是,不应该放在头文件中定义。

3 预编译时防止多次包含一个头文件的方法:

 

   #ifndef SALESITEM_H

   #define SALESITEM_H

  ….

 

   #endif

 

3.2 标准 string类型

3.2.2 string 对象的读写

  1 string类型的输入操作符:

n         读取并忽略开关所有的空白字符(如空隔、换行符、制表符)。

n         读取字符直到再次遇到空白字符,读取终止。

2         getline读取整行文本

string line;

getline(cin, line);

 

 它不忽略换行符,但也不存储换行符,遇到换行符就停止读取。

3.2.3 string对象的操作

1 为了避免溢出,保存string对象size最安全的方法是使用标准库类型string::size_type.

2 当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。

 

3.3 标准库vector类型

1 一些有自定义构造函数但没有默认构造函数的类,在初始化这种类型的vector对象时,程序员就不能仅提供元素个数,还需要提供元素初始值。

 

4.1 数组

1、特殊的字符数组

 两种不同赋值方式所占用的空间不同:

      char ca1[ ] = {'c','+','+'};

      char ca2[ ] = {'c','+','+','\0'};

      char ca3[] = "C++";

 

      cout<<" sizeof( ca1 ) = " << sizeof(ca1)<<endl;

      cout<<" sizeof( ca2 ) = " << sizeof(ca2)<<endl;

      cout<<" sizeof( ca3 ) = " << sizeof(ca3)<<endl;

输出结果:

sizeof( ca1 ) = 3

 sizeof( ca2 ) = 4

 sizeof( ca3 ) = 4

 

4.2 指针的引入

4.2.3 指针的操作

 1 当一个指针变量sp1指向一个字符串变量s1时,若此时再给此指针sp1赋值,则也会改变字符串变量s1。而若此时sp1指向另一指针sp2,只是让sp1重新指向了一个变量,但并没改变s1的值。

string s1("some values");

    string *sp1 = &s1;

    string s2("another");

    string *sp2 = &s2;

 

    cout<<" *sp1 = "<<*sp1<<endl;

    cout<<" s1 = "<<s1<<endl;

    cout<<" &s1 = "<<&s1<<endl;

    cout<<" sp1 = "<<sp1<<endl;

 

    cout<<" *sp2 = "<<*sp2<<endl;

    cout<<" &s2 = "<<&s2<<endl;

    cout<<" sp2 = "<<sp2<<endl;

 

 

 

    *sp1 = " a new value ";

 

  cout<<"======================"<<endl;

    cout<<" *sp1 = "<<*sp1<<endl;

    cout<<" s1 = "<<s1<<endl;

    cout<<" &s1 = "<<&s1<<endl;

    cout<<" sp1 = "<<sp1<<endl;

 

    cout<<" *sp2 = "<<*sp2<<endl;

    cout<<" &s2 = "<<&s2<<endl;

    cout<<" sp2 = "<<sp2<<endl;

 

 

    sp1 = sp2;

 

  cout<<"======================"<<endl;

    cout<<" *sp1 = "<<*sp1<<endl;

    cout<<" s1 = "<<s1<<endl;

    cout<<" &s1 = "<<&s1<<endl;

    cout<<" sp1 = "<<sp1<<endl;

 

    cout<<" *sp2 = "<<*sp2<<endl;

    cout<<" &s2 = "<<&s2<<endl;

    cout<<" sp2 = "<<sp2<<endl;

 

输出结果:

*sp1 = some values

 s1 = some values

 &s1 = 0012FF34

 sp1 = 0012FF34

 *sp2 = another

 &s2 = 0012FF00

 sp2 = 0012FF00

======================

 *sp1 =  a new value

 s1 =  a new value

 &s1 = 0012FF34

 sp1 = 0012FF34

 *sp2 = another

 &s2 = 0012FF00

 sp2 = 0012FF00

======================

 *sp1 = another

 s1 =  a new value

 &s1 = 0012FF34

 sp1 = 0012FF00

 *sp2 = another

 &s2 = 0012FF00

 sp2 = 0012FF00

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值