C语言指针,数组,函数总结

引子:数据在内存中是如何存储的,又是如何读取的?内存编号就是内存的地址( 内存中每个字节都有一个编号, 即地址)
1. 概念:e
地址:内部存储器的编号,称为地址。如变量a 的位置编号,变量b 的位置都是指针。
指针变量:专门存放地址的变量称为指针变量。
地址、指针、指针变量都称为指针。
一、 变量的地址 ( 指针 ) 和指向变量的地址变量 ( 指针 )
1. 概念:
变量的指针: 就是变量的地址。
指针变量: 是用来存放地址的变量,普通变量是用来存放数据的,指针变量是存放地址的。
2. 定义地址变量:
1)         格式: [ 存储类型 数据类型    * 指针变量名;
int i, j;
int * pointer1, *pointer2;
存储类型是这个地址变量的存储位置
数据类型指的是这个地址变量指向的目标变量类型,不代表本身的类型大小。
2)         指针变量的赋值:
方法一:
int  a = 5;  int *p = &a; // 定义并初始化。
方法二:
int  a = 5; int *p;  p = &a;//  先定义后赋值。
PS:
定义时,int *p中*是为了说明该p是地址变量,用来存放地址;
定义地址变量时必须指定数据类型,不同类型指针不可相互赋值;
指针变量的数据类型不表示变量的类型,是表示该变量指向的目标的数据类型,访问内存时读取的内存空间大小。
3. 指针变量引用
1)         * & 符号
  * 定义指针变量/ 取地址对应的变量的内容( 间接访问) //i = 3 直接 ,*p=3 间接
  & 取变量的地址。
 
* & 互为逆运算。自右向左
3)         引用
Ø   对指针变量赋值
p = &a;
Ø   引用地址变量指向的内容
printf( “a=%d\n”,  *p );
Ø   引用变量本身的内容( 即存储的地址)
printf(“%x\n”,  p);
eg:
int i = 188; int *p = &i;
p 指针变量,内部存放的是目标的地址;
*p 目标,目标内存数据;
&p 指针变量的内存地址;
p = &i = &(*p)
i = *p = *(&i)
4. 指针运算
指针运算就是地址运算,即指针变量中的地址作为运算量。
地址只能做算术、关系、赋值运算。
1)         算术运算
px + n 代表指针向地址大的方向移动 n 数据。
移动后的地址量是: (px) + sizeof(px 的类型) * n
px++  指针变量向地址大的方向移动一个数据。
      px - py 表示两个相同类型指针间相差数据的个数,而不是一个地址量。
px - py 的结果是  (px - py) /sizeof( 数据类型)
px + py 的结果?
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值