精华内容
下载资源
问答
  • c语言用下标法和指针法引用数组元素 程序流程图: 代码: #include<stdio.h> void main() { char ch[5]={'A','s','f','g','h'},*pf; int a[5]={3,6,9,8,7},i,*pa; pa=a; pf=ch; printf("下标针法引用数组元素...

    c语言用下标法和指针法引用数组元素

    程序流程图:
    在这里插入图片描述

    代码:

    #include<stdio.h>
    void main()
    {
    char ch[5]={'A','s','f','g','h'},*pf;
    int a[5]={3,6,9,8,7},i,*pa;
    pa=a;
    pf=ch;
    printf("下标针法引用数组元素:\n");
    for(i=0;i<5;i++)
    {
        printf("ch[%d]=%c\t\t",i,ch[i]);
    	printf("a[%d]=%d\n",i,a[i]);
    }
    printf("指针法引用数组元素:\n");
    for(i=0;i<5;i++)
    {
    	printf("*(pf+%d)=%c\t\t",i,*(pf+i));
    	printf("*(pa+%d)=%d\n",i,*(pa+i));
    }
    }
    
    

    结果:
    在这里插入图片描述
    小结:运用指针与数组的关系,引用数组值

    展开全文
  • 总结文档的时候遇到了这个问题。...博客作者说怀疑指针法查找元素比下标法更高效不一定正确,并且说当使用指针访问数组元素(注意是新创建一个指针指向数组名)要慢于通过数组下标访问。 这个说法是正确的,...

    总结文档的时候遇到了这个问题。在CSDN上看到一篇博客觉得有缺漏和误导性,所以自己总结一下。

    原参考博客:

    https://blog.csdn.net/qq_20583039/article/details/47000985

     

    博客作者说怀疑指针法查找元素比下标法更高效不一定正确,并且说当使用指针访问数组元素(注意是新创建一个指针指向数组名)要慢于通过数组下标访问。

    这个说法是正确的,但并不是原文想要表达的思想。

     

    原文是想要说明通过数组名做为指针完成对数组的遍历操作要比通过下标法完成数组遍历更加的快速高效。

    原因是通过下标法每次编译器都需要重新计算下标所指向的地址。假设有100个数的数组,那么他要进行100次乘法运算。每次乘法运算对应的汇编代码要对寄存器进行一次操作。之后再和数组首地址相加。

    而通过指针法遍历,每次都是固定的1*4(这里假设为4个字节的int型),也就是说编译器只需要计算一次乘法运算之后每次都是固定的1*4(也就是可以直接调用),之后再和数组首地址相加。

     

    这样子看就可以明确的表明是指针法更加的高效。

    代码示例

    int array[10],a;
    for(a = 0;a <10 ;a++)
    {
    array[a] = 0;
    }
    /*下标法方式遍历赋值为了对下标求值,编译器在程序中插入指令,取a的值并把它与整型的长度(也就是4)相乘,这个乘法需要花费一定的时间和空间。
    和*/
    int array[10],*ap;
    for(ap = array ; ap < array + 10;ap++)
    {
    *ap = 0;
    }/*指针法方式遍历赋值,虽然不需要下标但是也需要进行乘法运算,但是乘法运算出现在for语句的调整部分,1这个值必须和整型长度相乘,然后再和指针相加,但是这里有一个重大的区别:循环每次执行时,执行乘法运算的部分都是两个相同的数(1和4)结果,这个乘法只在编译时执行一次——程序现在包含了一条指令,把4和指针相加。程序运行时并不执行乘法运算。*/
    

    这里可以使用极限思想,为一个非常大数组遍历赋值,就可以清楚地看到两者所需时间的不同。

    展开全文
  • 数组元素那点事

    2016-11-02 22:55:16
    数组的下标表示 下标法是通过数组元素的下标直接直接引用数组元素。数组由同类型的一系列元素组成,每个元素都有自己的下标,使用数组时,

    数组的下标表示

    下标法是通过数组元素的下标直接直接引用数组元素。数组由同类型的一系列元素组成,每个元素都有自己的下标,使用数组时,可以通过下标引用相应的数组元素。使用下标引用时,可以同对等指针表达是来代替。

    #include <stdio.h>
      2
      3 #define WEEKNUM 7
      4
      5 int main()
      6 {
      7     int temp;
      8     int week[WEEKNUM] = {1,2,3,4,5,6,7};
      9
     10     printf("please input today is : ");
     11     scanf("%d",&temp);
     12     if(temp <= WEEKNUM)
     13     {
     14         printf("tomorrow is : %d\n",week[temp]);
     15     }
     16     else
     17     {
     18         printf("error \n");
     19     }
     20     return 0;
     21 }

    指针表示法,

    根据某个数目的增量在一个数组中移动时,使用指针变量将比使用下标产生效率更高的代码,前提他们被正确的使用。使用指针更容易写出质量低劣的代码。编写的程序不仅影响程序的运行效率,还影响他的可读性,不要为效率上的细微差别而牺牲可读性。

    #include <stdio.h>
      2
      3 #define LEN 26
      4
      5 int main()
      6 {
      7     char idx;
      8     char *p_str;
      9
     10     char str[LEN] = {'A','B','C','D','E','F','G','H','I','J','K','L','M',
     11                      'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',};
     12
     13     printf("please input Idx(0-25) and ENTFR :");
     14     scanf("%d",&idx);
     15
     16     if(idx < LEN)
     17     {
     18         printf("the character is : %c\n",*(p_str+idx));
     19     }
     20     else
     21     {
     22         printf("the Idx is overflow \n");
     23     }
     24     return 0;
     25 }

    ~                                                                                                                                                   
    ~                 

    展开全文
  • #include<stdio.h> int main() { int arr[5] = { 11,12,13,14,15 }; int i, * p; printf("下标法:\n"); for (i = 0; i < 10; i++) printf("arr[%d]=%d ", i,arr[i]); print...
    #include<stdio.h>
    int main()
    {
        int arr[5] = { 11,12,13,14,15 };
        int i, * p;
        printf("下标法:\n");
        for (i = 0; i < 10; i++)
            printf("arr[%d]=%d ", i,arr[i]);
        printf("\n 地址法:\n");
        for (i = 0; i < 10; i++)
            printf("arr[%d]=%d ", i, *(arr+i));
        printf("\n 指针法:\n");
        for (p=arr,i = 0; i < 10; i++)
            printf("arr[%d]=%d ", i, *(p+i));
        return 0;
    }

       

    展开全文
  • 数组下标法: a[i][j] 指针表示法: *( *(a+i) + j ) 行数组下标法: *( a[i] + j ) 列数组下标法: *(a+i...注意:在二维数组中,不要把a[i]、*(a+i)理解为一个数组元素或变量,它只是行地址的一种表示形式。
  • 数组是能用索引访问的同质...数组表示法和指针表示法某种意义上可以互换,程序使用上可以相互转换,方便理解程序,一般数组下标形式方便看懂程序。 int vector[5] = {1,2,3,4,5}; int * pv = vector; //vector=&am
  • 通过指针引用数组元素

    千次阅读 2017-05-23 17:18:36
    通过指针应用数组元素: (1)下标法,如a[i]形式; (2)指针法,如*(a+i)或*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值p=a; 例如:有一个整数数组a,有10个元素,要求输出数组中的全部元素。 ...
  • 对于有序数列而言,如arr[]=1,2,3,4...先求出sizeof函数求出数组元素个数,然后减1得到最大下标值,也就是10得下标,定义为right第一个0下标开始,定义left第一次求平均值mid下标对应元素5,比较后小于7,那么r...
  • 详谈数组下标数组

    2019-01-10 20:06:16
    今天学习了数组相关的知识:下标数组(分为索引数组,关联数组)、isArray、push、unshift 一、下标数组之索引数组 索引数组就是下标为数字的数组, 可以通过下标去访问数组 例如: var arr = [1,2,3,4,5,6]; ...
  • p++)//这个是指针与数组不一样的地方 printf("%d ",*p); printf("\n"); p=a;//等价于p=&a[0] while(p)//不能换成if,if不是循环语句 { printf("%d ",*p); p++; } return 0; }  
  • 还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组 function unique3(array){ var n = [array[0]]; //...
  • Matlab中数组元素引用

    千次阅读 2014-12-07 13:02:47
    1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组 A=  8 1 6  3 5 7  4 9
  • Matlab中数组元素引用——三种方法

    千次阅读 2018-07-19 12:44:25
    1.Matlab中数组元素引用有三种方法 1.下标法(subscripts)2.索引法(index)3.布尔法(Boolean) 注意:在使用这三种方法之前,大家头脑一定要清晰
  • Matlab中常用的“双下标"表示数组的行与列; 除了双下标,Matlab还提供了一种“单下标,使用单下标时,系统默认矩阵的所有元素按照列从上到下、行从左到右排成一列,只需要一个下标索引即可定位一个元素。其中...
  • C语音 指针 指向一维数组元素

    千次阅读 2016-01-11 13:06:31
    数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素。 一、用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个...
  • 如果有"int array[10],pointer=array;"...(3)指向数组的指针变量,也可将其看作是数组名,因而可按下标法来使用。例如,pointer[i]等价于*(pointer+i)。 注意:pointer+1指向数组的...
  • 数组是有一定顺序的数组元素的集合,数组元素在内存中的存储地址是连续的。指针的加减运算特别适合处理这种存储在连续内存空间内的相同类型的数据。我们可以用指针方便的来处理数组元素的运算 假设有一个声明:int ...
  • matlab中数组元素的引用

    千次阅读 2015-03-15 20:36:19
    matlab中数组元素的引用 A =[1 2 3 ; 4 5 6 ; 7 8 9] matlab中的数组...1)下标法 A(i,j),其中i,j可以为一维向量、标量、:号或者end(end表示最后一行或最后一列)。i表示行的信息,j表示列的信息。 利用上面A的例子。
  • C++指向数组元素的指针 在C++中,一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址;指针变量既然可以指向变量,也可以指向数组元素,所谓数组元素的指针就是数组...
  • 指针的关系运算:即两个指针可以比较大小。(将指针看作整数,因为指针就是地址) 举个例子:使用指针输出数组各元素值。 注意:这里使用指针变量p作循环控制...其中:a[i]称为数组元素下标法表示 而*(a+...
  • C语言 二分法查找数组元素

    千次阅读 2020-11-08 20:15:43
    在用二分法进行查找时,查找对象的数组必须是有序的,即各数组元素的次序是按其值的大小顺序存储的。其基本思想是先确定待查数据的范围(可用 [low,high] 区间表示),然后逐步缩小范围直到找到或找不到该记录为止。...
  • C编译程序用数组名存放数组在...指针移动方式访问数组元素: int a[5], *p; // a存放了数组的首地址 p=a; // 数组首地址赋给p p++; // 向下移动4个字节 指针与数组名都是地址,因此可以混合使用访问数组元素。...
  • MATLAB数组元素引用的三种方法

    万次阅读 2017-05-17 10:26:33
    1. Matlab中数组元素引用有三种方法: - 下标法(subscripts) - 索引法(index) - 布尔法(Boolean) - Markdown和扩展Markdown简洁的语法 - 代码块高亮 - 图片链接和图片上传 - LaTex数学公式 - UML...
  • C++多维数组元素的地址 在C++中,用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。 设有一个二维数组array,它有3行4列,如下: int array[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}; array是一...
  • 数组的指针法和下标法

    千次阅读 2018-03-01 21:56:53
    // #include "stdafx.h" #include &lt;stdio.h&gt; int main(int argc, char* argv[]) { /* int a[10] = {1,2,3,4,5,6,7,8,9,10}; int i = 0; while(i&...a[%d]=%-8d 地...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,946
精华内容 24,378
关键字:

下标法表示数组元素