指针

指针的基本用法

  • 是程序简洁、紧凑、高效
  • 有效的表示复杂数据结构
  • 动态分配内存
  • 动态分配内存
  • 得到多于一个的函数返回值

指针有什么缺点呢?

1. 地址和变量

  1. 在计算机内存中,每一个字节单元,都有一个编号
  2. 变量是对程序中数据存储空间的抽象

2.指针

  1. 指针为内存单元的地址,指针变量为存储地址的变量。(挖槽,对不对啊)
    • C语言内存的分配从低向高分配(是否和大小端有关?)
  2. 指针变量的声明
    • int a=3, *pa=&a;(int*)
    • 向指针复制必须为地址常量或相同类型的指针变量

3.指针运算

  1. 算数运算

    • 以目标数据的长度为单位进行运算
    • 两个指针相减,为两指针空间差所能存放的目标数据个数

指针与一维数组

int a[],*p;
p=a;
a[i]==*(p+i)==p[i]==*(a+i);

区别:指针变量是地址变量,数组的名是地址常量

指针与二维数组

a[][],a代表的是首地址,a+1代表的是下一行的首地址,作用降维引用

字符指针与字符串

C语言没有字符串数据类型,通过字符数组处理字符串

  1. char str[]=”Hello”;char *p =str; 数组中的值可以修改
  2. char *p= “Hello”; 字符串为常量,常量的唯一性.

指针数组

指针数组指由若干个相同存储类型和数据类型的指针的集合,(一组地址)

多级指针

  • 把一个指向指针的指针变量,称为多级指针变量
  • 对于指向处理数据的指针变量称为一级指针变量,简称一级指针
  • 而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针

    1. 多级指针的运算

指针变量加一,向地址大的方向移动一个目标数据,类似的道理,多级指针运算也是以其目标变量为单位进行偏移。目标变量的长度取决于变量类型在系统中的占有的内存位数。

指针数组名多级指针

void指针和const修饰符

  • void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量
  • 对于void指针,在没有强制类型转换之前,不能进行任何指针的算数运算

void指针的应用
1. void* malloc(size_t size);动态内存申请
2. int pthread_create()线程
3. void qsort() 排序

总结,为了使函数接口更加的通用.


  • const修饰一个变量,此变量的值无法再修改,用指针指向const变量时,其指针也应为const

    1. const在*前,限制通过指针改变目标,但指针变量存储的地址可以修改
    2. *在const前,指针不可以在存储其他的地址,但是*q可以改变其指向的目标
    3. const *const q 啥都不能改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值