C++学习(二)——指针与动态内存分配

指针与动态内存分配

  1. 变量的地址
    变量a占用的是内存的2000~2003四个单元,变量a的地址为2000。源代码中写a=5;我们可以理解为将5赋给变量a;而计算机在执行程序时,只是将5送入2000~2003四个存储单元中。

变量的地址
2. 程序内存结构
- 代码段:程序代码,由exe文件中相应内容载入内存后形成,只读
- 静态数据区:全局变量、静态数据成员和静态局部变量。全局变量在程序启动后占用存储空间;静态局部变量在第一次执行时创建
- 栈区:局部变量、函数参数与返回值,由操作系统自动维护
- 堆区:由程序员动态请求的数据区,运行时确定,由程序员负责申请和释 放
3. 动态内存分配
使用new请求内存时,可能由于内存不足会造成失败,应该随时进行检测。


int *p;
if((p=new int) == NULL)
{
cout<<“error”<<endl;
exit(0);
}
*p=5;
……
delete p;
4. 指向常量指针、常指针、指向常量的常指针

  • 指向常量指针
     const char *pc=“abcd”;
     或char const *pc=“abcd”;
     //pc所指向的字符串不能被修改。
  • 常指针
    char * const pc=“abcd”;//pc不能指向别的字符串,但可改变指针所指向的内容
    pc[2]=‘a’;      
  • 指向常量的常指针
    const char * const pc=“abcd”;//pc不能指向别的字符串,也不能改变指针所指向的内容。

函数及参数传递

值传递

函数的参数是局部变量

int sum(int a,int b)
{
        return a+b;
}
int main()
{
        int x(5),y(4);
        cout<<sum(x,y)<<endl;
     return 0;
}

指针传递

void xhg(int *a,int *b)
{
        int *tmp;
        tmp=b; b=a; a=tmp;
}
int main()
{
        int x(5),y(4);
        xhg(&x,&y);
        cout<<x<<‘  ‘<<y<<endl;
     return 0;
}

引用传递

void sum(int &a, int b)
{
        a+=b;
}
int main()
{
        int x(5),y(4);
      sum(x,y);
        cout<<x<<endl;
     return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值