现在的位置: 首页 > 综合 > 正文

指针详解

2013年12月13日 ⁄ 综合 ⁄ 共 1481字 ⁄ 字号 评论关闭

指针的初始化

指针可以用0值或在编译时可获得整型const对象的0

const int i=0;

int *p=i; //available

int *p=0; //available

指针只能初始化或赋值为同类型的变量地址或另一指针

       double dval;

       double *db=&dval;

       double *db2=db;

       int *i=&dval; //error

指针与引用的比较:

第一引用总是指向某个对象,定义引用时没有初始化时错误的。

第二赋值行为的差异,给引用赋值修改的时该引用所关联的对象的值,而并不是使引用和另外一个对象发生关联,该引用始终指向初始化时的对象。

使用指针访问数组

在表达式中使用数组名时,改名字会自动转换为指向数组第一个元素的指针。

int ia[]={0,2,4,6,8};

       int *p=&ia[2];

       int i=p[2];

       int j=p[-2];

       cout<<i<<endl;

        cout<<j<<endl;

对于指针形参

该类实参复制给形参,在函数中的任何改变只用于局部副本,如果在被调函数中修改了形参,主调函数中使用的实参的值并没有改变,改变的是实参指针所指向的变量的值。

void reset(int *ret)

{

       *ret=10;

       ret=0;

}

int main() 

{  

       int i=42;

       int *p=&i;

       cout<<"i "<<*p<<endl;

       reset(p);

       cout<<"i "<<i<<endl;

       cout<<"i "<<p<<endl;

       //cout<<*p<<endl;

       int end;

       scanf("&d",&end);

       return 0; 

}

class 和struct的唯一差别

默认情况下,classprivatestructpublic

编写自己的头文件ifndef

C++预处理器实在编译之前运行,预处理器用指定的头文件内容替换每个#include
避免多重包含的方法:

#ifndef
SALESITEM_H

#define SALESITEM_H

#endif

数组的位数必须用常量表达式来定义

指:整形字面值常量、枚举常量、常量表达式初始化的const对象。

Int staff_size=27;

Char buffer[staff_size]; //错误

 

const int staff_size=27;

char buffer[staff_size]; //可行

多维数组

多维数组元素的初始化

int  ia[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};

int  ia[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

上述两种初始化方法相同

int n=99999;

       int i,j;

       char **data=(char**)new char[7];

       for( i=0;i<7;i++)

       {

              data[i]=new char[10];

              itoa(n,data[i],10);

              n--;

       }

       for(j=6;j>=0;j--)

              cout<<data[j]<<endl;

       for(i=0;i<7;i++)

              delete []data[i];

 

【上篇】
【下篇】

抱歉!评论已关闭.