学习笔记 --指针

指针是保存地址的变量。指针变量的值是具有实际值的变量的地址。

指针作为函数参数时,形参是指针变量,例如int exchange(int *a,int *b),实参传入表示地址的变量,例如int *a,*b,exchange(a,b)。

*p++表示先输出当前地址的值,然后指针指向下一个地址

const指常变量, int const *p  说明指针指向可变,值不可变。int * const p 说明指针值可变,指向不可变。const 前后都有*时,指向和值都不可变。

数组变量是特殊的指针,所以

  • int  a[5];int  *p=a;
  • 数组单元需要取地址,
  • a=&a[0] 
  • p[0]==a[0]

 malloc函数可以申请确定单元个数的数组所要占的空间,如果申请失败则返回0,也叫做NULL。 

用完空间必须还给”系统“,只能还申请的空间的首地址,比如int *p = (int*)malloc(n*sizeof(int)),还得时候只能 free(p)。其中int*用来强制类型转换。

对于以下代码段,正确的说法是:

char *p;
while (1) {
    p = malloc(1);
    *p = 0;
}
  • A.最终程序会因为没有没有空间了而退出

  • B.最终程序会因为向0地址写入而退出

  • C.程序会一直运行下去

  • D.程序不能被编译

选B,因为malloc分配内存失败后不会直接退出程序,会返回NULL指针,而*p=0对null指针位置写入数据,引起程序终止。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值