C语言指针变量

指针变量的基本操作基本操作

int a,*iptr,*jptr,*kptr;

    iptr = &a;

    jptr = iptr;

    *jptr = 100;

kptr = NULL;

  • 己址和己空间

  •         指针变量也是一个变量,对应一块内存空间,对应一个内存地址,指针名就是己址。这空内存空间多大?一个机器字长(machine word),32位的CPU和操作系统就是32个位,4个字节,其值域为:0x-0xFFFFFFFF。64位的CPU和操作系统就是64个位,8个字节,其值域为:0x-0xFFFFFFFFFFFFFFFF。
  • 己值、他址、他空间
  • 指针变量的值就是其指向的空间的地址,指向的地址的空间大小就是指针变量指向类型的大小。

 声明与初始化

    int *ptr;

    int *ptr_2;

    int a = 1;

    ptr_2 = &a;

    // *ptr = 0;    // 非法操作,其指向其指向的内存空间还未确定

    ptr = &a;                       // ① 右值是一个变量地址

    ptr = ptr_2;                    // ② 右值是一个同类型指针,且已初始化

    ptr = (int*)malloc(sizeof(int));// ③ 右值是一个内存分配函数返回一个void指针

   *ptr = 0;       // 合法操作,ptr有了确定的指向及指向的内存空间;

 函数之间指针值的传递

       函数(如下例的funcForSpace())内定义局部变量(如下例的a)保存在一个函数的栈帧上,当一个函数执行完毕后,另一个函数(如下例的stackFrame_reuse())执行时,该空间会被stackFrame_reuse()重复使用,a所使用的空间将不复存在,所以当一个指针变量指向局部变量的内存空间时,其地址值传递给主调函数时,并不是一个有效值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值