指针详解(1)

指针全称叫做指针变量,指针也是一种变量类型。指针变量存储的是地址。

指针类型决定了指针加1,减1的时候一次走多远的距离,例如:char*+1走1字节,int*+1走4字节。

注:指针-指针计算前提为两块指针指向同一块空间。

sizeof()的返回值类型为unsigned int。

存储方式:

例如:在(vs)地址中存储时,存储的数在内存中反向存储,如原来为 00 00 00 01,那么存储时为01 00 00 00,从左到右为低地址向高地址。

const:

被const修饰的变量无法修改(无法在语法层面直接进行修改,但是可以通过指针直接修改地址上的值)。

C与C++的区别:

在C++中被const修饰的变量就是常量,而在C中不是常量而是常变量。

const放置方式与区别:

const修饰指针变量既可以放在*左边,也可以放在*右边,两边意义不同。

置于右侧:

放在指针右边例如int * const p=&a,那么p就不能存其他变量的地址了,只能存a的地址,即const限制的是指针变量本身。但是可以通过另一个指针变量修改指针变量指向的内容,因为const置于*右边时指针变量也是变量,与普通变量一样可以通过指针修改。

置于左侧:

将const置于*左边时,指针变量本身可以被修改,但指针变量指向的值无法被修改,此时相当于指针变量只能存地址,而不能修改地址。

理解方法:

以int *const p为例,const修饰右侧的p,因而指针变量p本身无法被修改。

int const *p,const修饰右侧的*p,也就是指针变量p指向的位置的值无法被修改。

assert函数:

<assert.h>头文件引入函数assert()。

写法为assert(p!=NULL),括号中加入判断语句,一旦不满足条件那么在运行时就会报错然后输出报错的assert函数所在的行。

如果想禁用assert函数,只需在assert头文件前加上#define NDEBUG即可。
assert在debug模式才可以使用,在release模式会自动禁用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值