精华内容
下载资源
问答
  • 下标法表示数组元素
    千次阅读
    2021-05-24 10:04:40

    本文源自《C++沉思录》第12章,添油加醋一番,仅供娱乐。

    在C++中,访问一个数组中的元素有两种方法,一种使用下标访问,另一种是用指针,代码写法如下

    void f(int& i);  // 假设存在这样一个函数

    int a[N];        // 这是一个数组

    // 下标法遍历整个数组

    for (int i = 0; i < N; ++i) {

    f(a[i]);

    }

    // 指针法遍历整个数组

    for (int* p = a; p < a + N; ++p) {

    f(*p);

    }

    很明显的区别是:下标写法比较易懂,程序意图也很清晰。而指针写法会引起对指针头疼者的反感,但是指针版本的速度会比较快一点——虽然差别不是很大。

    更深层次的区别是:下标法中使用的下标表示的就是一个数字,这个下标并不一定只用来索引数组,还可以拿它做其他事情,比如你想初始化一个数组:值为下标的平方。那么使用下标就可以这样写:a[i] = i * i; 如果用指针方法必须另外再定义一个整数——这使得不但指针要递增,这个整数也要递增,没有下标法简洁。

    下标法要指定一个数组中的元素,必须依赖数组的名字和数组中元素的位置:可以用一个下标访问两个数组中位置相同的元素,在复制数组的时候可以这样使用:a[i] = b[i]; 指针法不需要了解数组的名字,也不需要知道元素的位置,指针本身就包含了全部的信息,能够从头到尾依次访问整个数组的元素。

    这个区别本质上是设计上的区别,而并非效率上的考虑,如果使用下标使得程序更加简单易懂而且逻辑合理,那么就使用下标,而且指针法还有一定的隐患:如果数组已经被销毁,指向数组元素的指针则会失效,指向非法内存。

    其实平时基本不会用指针来遍历数组,大多数都不只是简单地遍历数组,而是要利用下标值进行某些操作,而像复制数组等简单操作可以利用STL的模板算法搞定。下标法的好处相比指针的不方便性使得指针法遍历不常使用。

    posted on 2008-12-31 22:12 Ajey 阅读(1249) 评论(0)  编辑 收藏 引用

    更多相关内容
  • //下标法 编写数组元素的输入与输出 #include <stdio.h> int main() { char a[6],i; printf("请输入:"); //下标法输入数组 for(i=0;i<6;i++) { scanf("%c",&a[i]); } printf("\n"); //...

    代码

    //下标法 编写数组元素的输入与输出 
    #include <stdio.h>
    int main()
    {
    	char a[6];
    	int i;
    	printf("请输入:");
    	
    	//下标法输入数组 
    	for(i=0;i<6;i++)
    	{
    		scanf("%c",&a[i]);
    	} 
    	printf("\n");
    	//下标法输出数组
    	printf("输出为:");
    	for(i=0;i<6;i++)
    	{
    		printf("%c",a[i]);
    	}
    	printf("\n"); 
     } 
    

    输出

    在这里插入图片描述

    另外

    另外,对于输入和输出语句中,也可以这么写:

    //下标法 编写数组元素的输入与输出 
    #include <stdio.h>
    int main()
    {
    	char a[6],i;
    	printf("请输入:");
    	
    	//下标法输入数组 
    	for(i=0;i<6;i++)
    	{
    		//scanf("%c",&a[i]);
    		scanf("%c",a+i);  //这里 a+i 等价于 &a[i] 
    	} 
    	printf("\n");
    	//下标法输出数组
    	printf("输出为:");
    	for(i=0;i<6;i++)
    	{
    		printf("%4c",*(a+i)); //这里 *(a+i)等价于a[i] 
    	}
    	printf("\n"); 
    	return 0;
     } 
    

    同样,输出为:

    这里对输出格式进行了控制。

    注:数组名a代表数组的首地址,即元素a[0]的地址&a[0],所以表达式 a+1
    表示首地址之后下一个元素的地址,即数组中的第2个元素即下标为1的元素a[1]的地址&a[1]。由此可知,表达式 a+i 代表数组中下标为 i
    的元素的地址&a[i]。 例如,* a 或者 * (a+0)
    可以表示取出首地址a所指的存储单元中的内容,即元素a[0],*(a+i)表示取出首地址元素后第i个元素的内容,即下标为i的元素a[i]。

    在这里插入图片描述

    展开全文
  • /*调用数组元素的三种方法:下标法、数组名法、指针法*/ #include<stdio.h> int main() { int a[] = { 1,2,3,4,5 }, i, * p; printf("用下标引用数组元素:\n"); for (i = 0; i < 5; i++) printf("%d\...
    /*调用数组元素的三种方法:下标法、数组名法、指针法*/
    #include<stdio.h>
    int main()
    {
    	int a[] = { 1,2,3,4,5 }, i, * p;
    	printf("用下标引用数组元素:\n");
    	for (i = 0; i < 5; i++)
    		printf("%d\n", a[i]);
    	printf("用数组名引用数组元素:\n");
    	for (i = 0; i < 5; i++)
    		printf("%d\n", * (a+i));
    	printf("用指针引用数组元素:\n");
    	for (p = a; p < a+5; p++)
    		printf("%d\n",  * p);
    	return 0;
    }
    
    展开全文
  • #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;
    }

       

    展开全文
  • 1. Matlab中数组元素引用有三种方法:下标法(subscripts)索引法(index)布尔法(Boolean)注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组:...
  • 访问数组下标元素(Matlab)

    千次阅读 2021-04-27 19:34:57
    Matlab中常用的“双下标"表示数组的行与列; 除了双下标,Matlab还提供了一种“单下标,使用单下标时,系统默认矩阵的所有元素按照列从上到下、行从左到右排成一列,只需要一个下标索引即可定位一个元素。其中...
  • 数组常用方法之一:二分查找的使用
  • 数组是能用索引访问的同质...数组表示法和指针表示法某种意义上可以互换,程序使用上可以相互转换,方便理解程序,一般数组下标形式方便看懂程序。 int vector[5] = {1,2,3,4,5}; int * pv = vector; //vector=&am
  • 详谈数组下标数组

    2019-01-10 20:06:16
    今天学习了数组相关的知识:下标数组(分为索引数组,关联数组)、isArray、push、unshift 一、下标数组之索引数组 索引数组就是下标为数字的数组, 可以通过下标去访问数组 例如: var arr = [1,2,3,4,5,6]; ...
  • matlab数组元素个数

    千次阅读 2021-05-06 00:58:08
    A= 1 7 7 2 3 5 6 8 0 原来矩阵没有 第4行和第4列, MATLAB 自动 增加行列数,对 未输入的元素赋 值0 2函数生成矩阵 MATLAB提供了一些函数来生成特殊矩阵,常见命令有:(1) zeros(生成零矩阵) ; (2) eye(生成对角元为1.....
  • c代码-运用指针计算10个元素数组中最大值最小值并返回在数组中的位置
  • 下标法直接引用数组元素 #include<stdio.h> int main() { int a[10]; int i; for (i = 0; i < 10; i++) { scanf ("%d", &a[i]); } for (i = 0; i < 10; i++) { printf("%d", a[i]); } }...
  • 采用指针访问方式,从键盘给数组a[n]输入数据,然后对数组值按逆序存放输出 首先,,要知道怎样用指针遍历数组元素 #include<iostream> using namespace std; int main() { int a[5] = { 1,2,3,4,5 }; ...
  • Matlab中数组元素引用有三种方法

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

    千次阅读 2022-03-03 20:11:44
    下标法,如a[i]形式,这是最简单的方式 了; 指针法,如 * (a+1) 或 *(p+1)。其中a是数组名,p是指向数组元素的指针变量,其初值为p = a。 代码实现: #include<stdio.h> #include<stdlib.h> int main...
  • 1.遍历数组它是最简单的数组去重方法(indexOf方法)实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中; var arr=[2,8,5,0,5,2,6,7,2];function unique1(arr){var ...
  • Matlab中数组元素引用——三种方法

    千次阅读 2021-04-21 13:47:45
    下标法(subscripts)2.索引法(index)3.布尔法(Boolean)注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组A=8 1 63 5 74 9 2Matlab的存储顺序...
  • matlab学习--数组下标法引用

    万次阅读 2016-10-28 20:15:28
    MATLAB beginner,经常会遇到这样的疑问,Matlab矩阵元素引用真灵活,...在http://www.matlabsky.com/thread-356-1-1.html中我们已经分析了数组、矩阵、方正、行列式、向量的区别Matlab中数组元素引用有三种方法:1.下
  • 通过指针引用数组元素

    千次阅读 2017-05-23 17:18:36
    通过指针应用数组元素: (1)下标法,如a[i]形式; (2)指针法,如*(a+i)或*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值p=a; 例如:有一个整数数组a,有10个元素,要求输出数组中的全部元素。 ...
  • 引用数组元素

    千次阅读 2019-04-24 17:15:47
    (2)下标法。有a[i] 和 p[i] 两种形式。在编译时这两种形式也要处理成 *(a+i) 或 *(p+i) ,即先按“a+i x(一个元素占用字节数)”计算出第 i 号元素的地址,然后通过指针运算 符 “ * ” 来引用该元素。 下面举个...
  • 一、用指针指向一维数组的元素//定义一个int类型的数组inta[2];//定义一个int类型的指针int*p;...输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的。 由于数组名代...
  • 某企业新建一工业厂房,元素用部毁顶之袭击台风而全在厂前遭房封受强损,业厂该工房(。表述下列中正确的是(,标表我国项目有关责任制的根据规定法人。不属位编的是项目于建年度制的计划工程设单,中组矩阵下列选项中...
  • 数组元素的标识与寻访(作者:lcc)数组元素的标识n “全下标(index)”标识经典数学教科书采用“全下标”标识:每一维对应一个下标。Ø 如对于二维数组,用“行下标和列下标”标识数组的元素,a(2,3)就表示二维数组a...
  • 数组与指针

    2021-05-21 07:10:45
    前面我们已经知道,通过数组下标可以确定数组元素在数组中的顺序和存储地址。由于每个数组元素 相当于一个变量,因此指针变量可以指向数组中的元素,也就是说可以用指针方式访问数组中的元素。 对一个指向数组元素的...
  • 5种方法实现数组元素去重(详解)

    千次阅读 2019-07-11 09:51:41
    1.遍历数组 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本...
  • 一维数组与指针

    2019-05-16 21:37:09
    下标法:数组名[序号],如a[3] 指针法:通过只想数组元素的指针找到所需元素。 指针法能够使目标程序质量高(占内存少,运行速度快)。 例、输出数组中的元素 #include<stdio.h> void main() { int ...
  • Java中数组总结

    千次阅读 2021-03-07 00:38:39
    数组是具有相同数据类型的一组数据的集合。...1.1.2用new运算符分配内存数组名字 = new 数组元素类型[数组元素的个数];(数组下标从0开始,整型数组的初始值为0)int[] arr;//声明数组arr=new int[...
  • C语音 指针 指向一维数组元素

    千次阅读 2016-01-11 13:06:31
    数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素。 一、用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,627
精华内容 29,850
关键字:

下标法表示数组元素