指针的本质分析

变量:程序中的变量只是一段存储空间的别名
指针本质:变量

int i =0;
int j =0;
int* p =&i;
j = *p;
//变量P保存着变量i的内存地址,即p == &i;    *p == i

不同类型的指针占用的内存大小都是一样

#include <stdio.h>
int main()
{
    int i =0;
    int* pI;
    char* pC;
    float* pF;
    pI = &i;
    *pI = 10;
    printf("%p, %p, %d\n",pI,&i,i);
    printf("%d, %d, %p\n",sizeof(int*),sizeof(pI),&pI);
    printf("%d, %d, %p\n",sizeof(char*),sizeof(pC),&pC);
    printf("%d, %d, %p\n",sizeof(float*),sizeof(pF),&pF);
}

结果:
在这里插入图片描述传值调用与地址调用
(1)指针是变量,因此可以声明指针参数
(2)当一个函数体内部需要改变实参的值,则需要使用指针参数
(3)函数调用时实参值将复制到形参
(4)指针适用于复杂数据类型作为参数的函数中

常量与指针

const int* p;	//p可变,p指向的内容不可变
int const* p;	//p可变,p指向的内容不可变
int* const p;	//p不可变,p指向的内容可变,p是只读变量
const int* const p;//p和p指向的内容都不可变

口诀:左数右指
当const出现在号左边时指向的数据为常量
当const出现在
号右边时指向本身为常量

总结:
(1)指针是C语言中一种特别的变量
(2)指针所保存的值是内存的地址
(3)可以通过指针修改内存中的任意地址内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值