C的回归基础学习4——指针(1)

C的回归基础学习4——指针(1)

前言

要认真的说的话,指针不能算是复习内容。因为当初没有系统学习过指针,所以这也算是新东西了,准备先学指针基础知识,再在复习完函数,结构体之后搞一个深层次的联动。

指针的基本概念

  • 定义:C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。指针是一种保存变量地址的变量。
  • 为什么要用指针(因为一直没用过,这问题一直困扰着我)
    1.指针的使用使得代码共享内存数据,这样可以使程序更为快速高效;
    2.某些高级结构需要指针
    3.函数的调用是传值的,有时需要传址的情况(如通过被调函数修改调用函数的对象)就得请指针出马。

指针的定义与初始化

  • 一句话解决定义 :<数据类型> *指针名
int *px;//定义了整型指针
char *py;//定义了字符指针
int *arr[10];//定义了10个整型指针
  • 初始化:
int a;
int *p=&a;//将某一同类型变量的地址赋予p
int *q=p;//将已有的指针变量赋予q
  • 指针所占的字节与类型无关,一般16位是2字节,32位是4字节,64是8字节。

指针的使用

  • 取址运算&:操作对象是变量(或有名存储区 这是啥?),数组名和常量就不行
  • 取内容运算*:操作对象为地址常量(如数组名)和指针变量。
  • 指针使用的注意事项:一定要要先给指针变量赋值(不管初始化还是后来在定义),再给这个指针所指的内容赋值,否则可能会赋值到你想象不到的地方去。
  • 针对上面一个问题,对于暂时没有指向任何东西的指针可以用NULL先行赋值,如果没有给该指针赋值,最后系统会提醒出错,而不是出现上面的情况。

指针的运算

  • 指针与整数运算以及自加自减结果都为指针。
    p+n,p-n,p++,p-- 分别表示下n个数据的地址,上n个数据的地址,下1个数据的地址,上1个数据的地址。
  • 但是地址的变化却不是简单+1,或+n,而是(p)+ n*sizeof(*p)(字节)
  • 要想表示地址+1可以用*(p+1).
  • 指针相减结果是一个整数,表示两指针所指的元素在数组中相距的距离。
int a[10];
int *p1=&a[9];
int *p2=&a[6];
printf("%d",p1-p2);
//结果是3

结语

指针的基本内容讲完了,但是实际运用其实应该还在指针与数组,函数,结构体等等的关系上。
(本文部分内容取自https://www.cnblogs.com/tongye/p/9650573.html)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值