zoukankan      html  css  js  c++  java
  • 指针详解

    总结:

    最大的收获就是明白了二维数组指针和指针变量。二维数组指针和指针数组是:单个指针和多个指针的区别

    二维数组指针变量是单个的变量,其一般形式中"(*指针变量名)"两边的括号不可少。而指针数组类型表示的是多个指针( 一组有序指针)在一般形式中"*指针数组名"两边不能有括号。例如: int (*p)[3];表示一个指向二维数组的指针变量。该二维数组的列数为3或分解为一维数组的长度为3。 int *p[3] 表示p是一个指针数组,有三个下标变量p[0],p[1],p[2]均为指针变量。

    所有数据都存放在存储器中,存储器的一个字节成为一个内存单元,内存单元的编号叫地址。

    一个指针是一个地址,是一个常量。

    指针虽然实际上是一个地址,但它却是一个数据结构的首地址,它是指向一个数据结构的。

    允许用一个变量来存放指针,这种变量称为指针变量。

    int *p1;表示p1是一个指针变量,它的值是某个整型变量的地址。

    指针变量同普通变量一样,使用前不仅要声明,还必须赋予具体的值。

    数组名和数组的第一个元素的地址都是整个数组的首地址。

    a[0]+0是一维数组a[0]+0号元素的首地址,a[0]+1是a[0]的1号元素首地址,由此可得:a[i]+j是a[i]的j号元素首地址,等于a[i][j]。

    由a[i]=*(a+i)得a[i]+j等于*(a+i)+j,由*(a+i)+j是二维数组a的i行j列元素首地址,该地址的值为*(*(a+i)+j)。

    二维数组长度表示:二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。

    static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
    int(*p)[4];
    int i,j;
    p=a;
    for(i=0;i<3;i++)
    for(j=0;j<4;j++) printf("%2d ",*(*(p+i)+j));

    缓冲区的存在本身是为了减少硬盘等存储设备的读写次数

    一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。

    函数指针变量:指向函数的指针变量,通过指针变量可以找到并调用函数。

    int (*pt)();空括号表示指针变量所指的是一个函数。

    允许一个函数的返回值是一个指针(即地址)这种返回指针值的函数称为指针型函数

    指针数组:一个数组的元素值是指针,int *pa[3];表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量,指针数组的每个元素被赋予二维数组每一行的首地址。可以通过一个指针数组来指向一个二维数组

    对指向数组,字符串的指针可以进行加减运算

    int *p[n];   p为指针数组,由n个指向整型量的指针元素组成

    引自:https://blog.csdn.net/ad_ad_ad/article/details/1522145

  • 相关阅读:
    win10如何在局域网中设置一台电脑的固定ip地址
    智能电视软件安装(WIFI上网)
    路由器连接宽带(成功上网步骤方法)
    FastReport.Net使用:[5]主从表
    FastReport.Net使用:[4]分组
    FastReport.Net使用:[3]简单报表一
    FastReport.Net使用:[2]添加MSSQL数据源一
    FastReport.Net使用:[1]屏蔽打印对话框
    如何配置FastReport.Net环境
    如何安装使用FastReport
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9542563.html
Copyright © 2011-2022 走看看