鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 编程语言开发 > c++ > >

C++学习备忘(二)

来源:互联网 作者:佚名 时间:2013-05-07 00:13
1.c++中的类型转换static_cast、dynamic_cast、reinterpret_cast、和const_cast,详见: 2.指针的指针使用例如: Item**itemList=NULL; itemList=newItem*[n]//初始化一个长度为n的Item*类型的空间,要求Item有默认构造函数 for(inti=0;in;i++)itemList[i]=n

1.c++中的类型转换static_cast、dynamic_cast、reinterpret_cast、和const_cast,详见:

   

2.指针的指针使用例如:

   Item **itemList = NULL;

   itemList = new Item*[n]//初始化一个长度为n的Item*类型的空间,要求Item有默认构造函数

for(int i=0;i<n;i++) itemList[i] = new Item();// 初始化每一个指针

//释放过程

for(int i=0;i<n;i++) delete itemList[i];//逐个释放

Delete itemList ; //释放itemList 

3.一个函数有多个值要返回时,可用指针或引用将参数传入在函数内修改,如:

  void GetGirdLocation( int x,int y,int &i,int &j )

  {

       i = y/10;

   j = x/10;

   }

   或

   void GetGirdLocation( int x,int y,int *i,int *j )

  {

       (*i) = y/10;

   (*j) = x/10;

   }

4.VS2008 快捷键  

  (Ctrl +k+f 整理格式)

 

5.按位取反“~”逻辑取反“!”

6.运算符顺序:++i执行语句前执行,--i执行语句后执行,语句中()的级别最高,指针高于算数逻辑运算,香港虚拟主机香港虚拟主机,取反“!”高于其他二元运算,算数运算高于逻辑二元运算,服务器空间,比较运算高于&&和||,例如:

   1+2==3&&!item->IsOk()&&!item->Age()>0

   等同于

   ((1+2)==3)&&(!(item->IsOk()))&&((!(item->Age()))>0)

参见:

7.void GetMemory(char *p,size_t num)

{

p = (char *)malloc(num);

//p

//

// 

}

 

int _tmain(int argc, _TCHAR* argv[])

{

char * str= NULL;

GetMemory(str,10);

  // str[0] = 'x';//

return 0;

}

8 C++中的指针类型判断可通过逐步化简的方法实现:

例如 float (**p)[10];

解释方法:

Double *(*gh)[10];

解释方法 

Int(*(*F)(int,int))(int);

解释方法 

         A (*F)(int,int);//F

所以:

Int *((*b)[10]);

解释方法:

          B = A[10];//

          b= &B//b是指向这个数组的指针;

所以

Double (*f[10])();

解释方法:

          f = A[10];//f

所以

9. ++i

  for (int i=0;i<2;i++)与for (int i=0;i<2;++i)等效,自增都放在循环体的最后执行,  等价于:

  int i=0;

  while(i<2)

i++;//

   

  但是 for (int y=0,i=0;i<2;y=i++)与for (int y=0,i=0;i<2;y=++i)不同

  前一个相当于:

   int i=0;

   while(i<2)

   {

      y = i;

      i++;

}

   后者相当于:

   int i=0;

   while(i<2)

   {

      i++;

      y = i;

}

10. C++中自加操作的执行时机会受到函数的影响,通常自加在一行结束后执行,在函数内的时候是在函数执行完成后运行。

例如:

#include <string>

#include <iostream>

 

using namespace std;

 

int Function(int i)

{

  cout<<i<<endl;

  return i;

}

 

int main()

{

int i,j =0;

i = (j++)+(j++);

    cout<<"i="<<i<<","<< "j="<<j<<endl;

    // i=0;j=2//

    

    j=0;

    i = Function(j++)+(j++);

    cout<<"i="<<i<<","<< "j="<<j<<endl;

    // 0

// i=1 j=2

//

//实际执行相当于

//int x = Function(j)

// j++

// i= x +j

// j++

    

    j=0;

    i = Function(j++)+Function(j++);

    cout<<"i="<<i<<","<< "j="<<j<<endl;

    //0

    //1

    //i=2 j=2

    j=0;

    cout<<j++<<j++<<j++<<j<<endl;

    // 0123

    system("pause");

    return 0;

}

 

 

   

 

网友评论
<