C语言指针

一、地址的概念引入

变量的访问有两种方式:

1、变量名

printf("ju = %d\n",juHuaTai);

2、地址

printf("ju = %d\n",*(&juHuaTai));

 printf("ju的地址是:%p\n",&juHuaTai);

二、指针变量的引入

  • 什么变量能存放地址?

答:指针变量

  • 怎样才能定义一个指针变量?

答:  int *p ; p = &a  或  int *p = &a

只有在定义一个指针变量的时候才是指针的标识符,其他情况都是一个运算符,跟+ - * / 类似,该运算符的功能是取出内存地址中数据的值(取内容)

  • 数组指针的两种表示方式:

①数组名

int array[10];

int *p;

p = array;

②第一个元素的地址

int array[10];

int *p;

p = &array[0];

char *array = "1234567890";

以上的数组定义,得到的是静态的数组,其值在定义之后就不可改变,如果强行改变就会发生段错误。

char *array[] = "1234567890";

这样得到的数组,其值是动态的,定义之后依然可以改变。

三、偏移

  • 指向谁(类型)  p = &a
  • 偏移后指向谁     p++

      int *p:p++偏移了4个字节

      char *p:p++偏移了1个字节

四、为什么要用指针

强制使指针地址保存在指定地址(多用于ARM架构、ARM逻辑编程、ARM驱动)

例:

int *p2 = (int *)0X0060FF00;

*p2 = 10;

printf("在内存的%p位置,存放值是%d \n",p2,*p2);

运行结果:在内存的0X0060FF00位置,存放值是10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值