C语言指针-----指针与变量

1、指针是什么?
2、地址是什么?
3、指针常量与常量指针

1、指针是什么?
指针是一个特殊的变量,特殊就特殊在他的内容是一个地址。
就像一个指示牌,指向一块地方,你想要的东西就在这块地方,你所处的地方是指示牌的地方(指针变量本身的地址)。

2、地址是什么?
地址就是处理器为内存编的序号,这里的内存是指各种处理器可以访问的设备,比如寄存器,接口,RAM,ROM,处理器要访问这些设备,就要将地址写到地址总线,控制器会将地址总线对应的地方接到数据总线,这时,处理器就可以往这个地址的存储单元读/写数据,总的来说,地址就是对应的编号,具体多少,有CPU平台决定。
存储方式有大端和小端模式。堆栈有升序栈/降序栈

3、指针常量与常量指针
下面说指针常量和指针变量,还有常量指针,这是指针与变量里最重要的一个概念。
指针变量:它可以指向别的地址,也可以改变当前指向地址里的值。

int x=10;
int *ptr=&x;//ptr是一个指针变量

指针常量:它不可以通过自身改变指向的变量,但是可以改变指向的地址

const int* ptr=&x;
ptr=&y;//right
*ptr=100//error

常量指针:它可以通过自身改变指向的变量的值,但不能再指向别的地址了,所以定义时要初始化

int * const ptr=&x;
ptr=&y;//error
*ptr=100//right

指向常量的指针:这里有一个问题,A是一个常量,B作为指针,指向A,那么B应该是一个常量指针还是一个变量指针呢?

#include<stdio.h>

int main(void){
    const int A=10;
    //int *B=&A;//error//可以指向一个变量,那么可以指向一个常量吗
    //invalid conversion from **`const int*' to `int*'**
    const int *B=&A;//指向一个常量所以要指向一个常量必须是指针常量
    printf("A is %d\n",A);
    printf("B is %d\n",*B);
}
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值