美文网首页
C++当中的指针汇总

C++当中的指针汇总

作者: 疋瓞 | 来源:发表于2022-02-08 16:05 被阅读0次

定义:

  • 指针也叫做“指针变量”,大小为4个字节或8个字节(存放的是计算机内存的地址)。通过指针可以对指针指向的内存区域进行读写。
  • 举例:
    int * p//p是一个指针,变量p的类型是int *。
    T p:p表示p所指位置存放的内容,内容大小为从p地址开始,sizeof(T)个字节。
    *:称为间接引用运算符。
    sizeof(T *)= 4(或8)字节
    char * PC=&ch;//使PC指向ch
  • 有了指针,就有了自有访问内存空间的手段。
  • 不同类型的指针不能相互赋值。
  • 指针运算:
    P: T* 类型的指针
    n:整数类型的变量或常量
    P+n:T类型的指针,指向地址,地址为:P+nsizeof(T)
    P++:P指向n+sizeof(T)

本质

  • 对于一个指针来说,它本身存放的就是一个地址,所以大小是固定的。但是不同类型的指针规定了这个指针取数的时候,从其所指向的地址向后取多少个内存。
  • 空指针:地址为0不能访问,指向地址0的指针是空指针,可以用“NULL”关键字对任何类型的指针进行赋值。NULL实际上就是整数0;
  • 在指针作为函数形参时,可以直接修改所指地址的内容。写形参用“T *P”,写实参赋值的时候是“&m”。

指针类型

1、指针和数组:

  • 数组名是一个指针常量(能赋值给其他相同类型的指针,但不接受其他指针赋值),指向数组起始位置。
  • 作为函数参数时,T *P和T P[ ]等价。
  • 注:在函数中形参是实参的一个拷贝。
  • 指针和二维数组:一维数组a[i]是指向二维数组a[M][N]的,二维数组和一维数组一样在内存空间中是连续存放的。对于二维数组来说,一维数组就是它的指针。每个一维数组元素指向的都是二维数组对应行的行首元素地址。
    例子:T a[M][N] //a[i]是一个一维数组,类型为T。sizeof(a[i])=sizeof(T)N
    a[i]指向的地址:a的起始地址+iNsizeof(T);

2、指向指针的指针

int **PP;
int *p;
int n=1234;
p = &n;//p指向n所在位置的地址。
PP = &p;//PP指向指针p所在位置的地址。

3、指针和字符串

  • 字符串常量类型是char *;
  • 字符串数组名的类型也是char *,数组名就是一个地址。
  • 注意每个字符串默认结束会加‘\0’,所以在计算空间时要大一号。

4、void指针

  • 定义:void * p;
  • 可以用任何类型的指针对void指针进行赋值或初始化
  • sizeof(void)无意义,对void类型的指针p,p无定义,同理,对应的++p等运算也都是无意义的。
  • void指针常用来做形参,代表该处能存放“任何类型”的指针。

4、函数指针

  • 程序运行期间,每个函数都会占用一段连续的内从空间。而函数名就是该函数所占用内存区域的起始地址,我们可以将函数入口地址赋值给一个指针变量,使该指针变量指向该函数,然后通过指针变量来调用这个函数,这种指向函数的指针就是“函数指针”。
  • 定义形式:类型名(*指针变量名)(参数1类型,参数2类型,···)
  • qsort库函数其中包含的形参是一个函数指针。

相关文章

  • C++当中的指针汇总

    定义: 指针也叫做“指针变量”,大小为4个字节或8个字节(存放的是计算机内存的地址)。通过指针可以对指针指向的内存...

  • Golang 指针

    指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。Go语言当中的指针涉及到三个点:指...

  • C++知识点

    C++基本方法: C++ memcpy C++基本特性: C++引用(vs指针) C++指针 C++封装: 将...

  • C++ 指针常量、常量指针和常指针常量

    参考:C++ 指针常量、常量指针和常指针常量

  • Java基础

    Java和C++的区别?a. Java没有指针。c++可以通过指针直接操作内存,但这个动作是危险的,指针引起的操作...

  • C++ 指向类的指针

    原文地址:C++ 指向类的指针 一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成...

  • Jna send pointer pointer to c++

    目的: 有这样一个需求,java通过jna传递指针数组给c++,或者指针的指针 解决方案: c++ : 声明 vo...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • C++函数指针和Swift的函数对象

    C++函数指针和Swift的函数对象 在C++中学习函数指针式非常痛苦的事情,而在Swift里面学习函数指针则是非...

  • JS中的this指针

    JS中的this指针与C++的this和iOS中的(OC和Swift)self一样,它出现在某个函数当中, 指代的...

网友评论

      本文标题:C++当中的指针汇总

      本文链接:https://www.haomeiwen.com/subject/qpbbkrtx.html