精华内容
下载资源
问答
  • 引用数组元素

    千次阅读 2019-04-24 17:15:47
    引用一个数组元素可以有以下两种方法: (1)指针法。...,即先按“a+i x(一个元素占用字节数)”计算出第 i 号元素地址,然后通过指针运算 符 “ * ” 来引用元素。 下面举个例子看一下这两种用法...

    引用一个数组元素可以有以下两种方法:
    (1)指针法。有 *(a+i), *(p+i) 两种表现形式,都是用间接访问的方法来引用数组元素。
    (2)下标法。有a[i] 和 p[i] 两种形式。在编译时这两种形式也要处理成 *(a+i) 或 *(p+i)
    ,即先按“a+i x(一个元素占用字节数)”计算出第 i 号元素的地址,然后通过指针运算
    符 “ * ” 来引用该元素。
    下面举个例子看一下这两种用法:

    #include <stdio.h>
    int main()
    {
        int a[10],i,*p;
        for(i=0;i<10;i++)
            scanf("%d",&a[i]);
        for(i=0;i<10;i++)
            printf("%d ",*(a+i));	/*形式1:指针法之*(a+i)形式*/
        printf("\n");
        for(p=a;p<(a+10);p++)
            printf("%d ",*p);		/*形式2:指针法之*p形式*/
        printf("\n");
        for(i=0;i<10;i++)
            printf("%d ",a[i]);		/*形式3:下标法之a[i]形式*/
        printf("\n");
        for(p=a,i=0;i<10;i++)
            printf("%d ",p[i]);		/*形式4:下标法之p[i]形式*/
        printf("\n");
        return 0;
    }
    

    程序运行结果如下:
    1 2 3 4 5 6 7 8 9 10 ,然后按 enter 键得到
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 10
    1 2 3 4 5 6 7 8 9 10
    上述形式 1 和形式 3 的执行效率是相同的,都要按 a+i 计算地址,然后找出该单元中的值。
    由于 p++ 这样的自增操作无须每次都重新计算地址,所以形式 2 最快。但其中的 *p 究竟
    是哪个元素,不易看出,而下表法更直观些。

    展开全文
  • 引用数组元素的四种方式

    千次阅读 2020-02-29 23:10:58
    //注意a++是不可的,因为a本来就代表了数组的首地址,a是不可改变的。 { printf ( "%d\n" , * p ) ; } printf ( "-----------------\n" ) ; for ( p = a , i = 0 ; i < 5 ; i ++ ) ...
    #include<stdio.h>
    int main()
    {
     
       int a[] = { 1,2,3,4,5};
       int *p;
       int i;
    
       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++)//注意a++是不可的,因为a本来就代表了数组的首地址,a是不可改变的。
       {
    	   printf("%d\n", *p);
       }
    
       printf("-----------------\n");
    
       for (p=a,i = 0; i < 5; i++)
       {
    	   printf("%d\n",p[i]);//p[i]相当于*(a+1)
       }
    
       getchar();
       return 0;
    }
    
    展开全文
  • 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。 如果想按照其他...
    // An highlighted block
    arrayObject.sort(sortby);
    sortby :	可选。规定排序顺序。必须是函数。
    
    

    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

    若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    若 a 等于 b,则返回 0。
    若 a 大于 b,则返回一个大于 0 的值。

    引用文本

    输出:

    引用文本
    [3, 13, 15, 23, 25, 34, 55]

    有时候面试会遇到这道简单的题目!

    展开全文
  • 对数组引用

    千次阅读 2012-10-01 20:36:52
    函数的参数必须为数名或数组引用: int main() { int iarry[10]; int (&rarry)[10] = iarry; int *const parry = iarry; cout (iarry) ; //output: 10 cout (rarry) ; //output: 10 cout (parry) ; //...

    在Bjarne Stroustrup(C++创始人,他的主页)所写的《The C++ Programming Language, special edition》书中的第5章5.9节的第1题练习题中,要求写一个声明语句并进行初始化,“a reference to an array of 10 integers”,实现如下:

    //an array of 10 integers
    int arry[10] = {0};
    
    //a reference to an array of 10 integers
    int (&rcp)[10] = arry;

    因为&的优先级低于[],所以要加上圆括号,不加圆括号,则表示数组的每个元素的类型为int &:

    int &rcp[10];

    如果将数组名理解为常量指针,则也可以这样写:

    int *const &rcp1 = arry;//reference to a constant pointer to integer

    不过,这里的变量rcp1变成了对一个常量指针的引用。

    利用数组引用及模板,可以实现一个获取任意类型数组大小的函数:

    template<class T, size_t N>
    size_t getArraySize(T (&)[N]) {
      return N;
    }

    函数的参数必须为数组名或数组引用:

    int main() {
      int iarry[10];
      int (&rarry)[10] = iarry;
      int *const parry = iarry;
      cout << getArraySize(iarry) << endl; //output: 10
      cout << getArraySize(rarry) << endl; //output: 10
      cout << getArraySize(parry) << endl; //error
    
      return 0;
    }

    展开全文
  • 对数组引用

    2014-02-15 18:32:31
    所谓数组引用,即指向数组的引用; 如 int a[10] ;   int (&b)[10] = a ; 如果写成 int a[10] ;  int* &b = a ; 将会报错: cannot convert from 'int [10]' to 'int *&'。  或许你会说在数组名不...
  • 然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数。它是怎样工作的?这样是合法的和可移植的吗? 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明不...
  • Java集合面试题

    万次阅读 多人点赞 2019-06-25 14:46:19
    一个集合代表一对象,这些对象即为它的元素。Java 平台不提供这个接口任何直接的实现。 Set ,是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。 List ,是一个有序...
  • 1.不能建立引用数组,...更本质来说,可以理解为引用没有自身的地址,不占用内存空间,因此,声明引用数组没有办法分配内存空间,因为根本就没有空间可以分配给引用,所以不能声明和定义引用数组。 int &arr[3] = {2
  • C语言数组引用

    千次阅读 2019-11-23 23:20:08
    一维数组的定义方式为:类型说明符 数组名 [常量表达式] ...数组名arr通常情况下代表数组元素的首地址 printf("%d\n",arr); //输出为1 数组名arr在两种情况表示整个数组(即不表示元素地址) 1、在定义数组的同...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    OnePerson虽然存储的是Person类对象地址,但不是C中的指针,不能象指针那样可以进行加减运算,也不能转换为其它类型地址,它是引用型变量,只能引用(代表)Person对象,具体意义参见以后章节。和C、C++不同,C#只能用...
  • JAVA 基础

    千次阅读 多人点赞 2016-11-04 10:33:04
     Java中的数据类型有两种,基本类型(Primitive Type)和引用类型(Reference Type)。  1)基本数据类型   Java 基本类型分为两类:数值型和布尔型。数值型可分为整型以及浮点型,整形中的字符型也可单独...
  • perl对数组的操作

    万次阅读 2013-11-14 10:43:37
    试图访问不存在的Perl数组元素,则结果为NULL,但如果给超出Perl数组大小的元素赋值,则Perl数组自动增长,原来没有的元素值为NULL。如: @array=(1,2,3,4); $scalar=$array[0]; $array[3]=5;#now@arrayis(1,2...
  • Vue3.0相比于Vue2.0支持的观察的数组的原生方法更多,并且不需要通过写特定的方法来进行支持,对数组原生方法的观测可以合并到对数组下标、对象属性的响应代码里面。这是什么原理呢?这篇文章就来给你们揭秘! 2....
  • 对数组地址的一点问题

    千次阅读 2009-10-28 15:25:00
    在看《深入浅出MFC》的时候,遇到了如题的问题,去网上查了下,原来如此原帖地址...[4] 我通过下面一段程序发现:通常说a实质是数组的地址,那么: int a[3][4]; co
  •  eg: *(a+i) 或 *(p+i) //其中a为数,*(a+i)意为a数组的首地址+i——即指向第i个元素{注意:这里不是说地址加上i,要看是什么类型,eg:char型的话一个字节一个地址,int类型的话VC++中是4个字节一个地址,...
  • 数组的定义和引用

    千次阅读 2019-05-16 23:41:00
    2.int ,float,char 等类型对数组进行的定义 int a[ 10 ],float a[ 10 ], char a[ 10 ] 二、数组的引用 1、用for循环进行引用。 #include<stdio.h> int main() { int i, a[10]; for( i=0; i<=9 ;...
  • 反观数组,当数组作为形参,形参和实参都放在一个栈中,但是他们指向的是同一个数组,也就是说形参实参共享这个数组,所以实参传值传的其实是个引用,指向同一个数组,形参在方法中变了,那么实参也会变;...
  • 1 对数几率回归原理分析 1.1 引入 1.2 损失函数 1.3 求最优解 2 对数几率回归实践 Logistic回归的一般过程 Logistic回归的优缺点 Logistic回归算法描述(改进的随机梯度下降) 《机器学习实战》第五章代码...
  • //正确,方法引用,元素类型要与f2的类型一致,只能有一个入参 System.out.println(userList); //[User{age=12, name='Tom'}, User{age=12, name='Tom'}, User{age=12, name='Tom'}] userList.stream().forEach...
  • 小测试
  • C++ 面试题大全

    千次阅读 多人点赞 2017-05-31 09:42:54
    //正确 例2 string foo( ); void bar(string & s); 那么下面的表达式将是非法的: bar(foo( )); bar("hello world"); 原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型...
  • 错题记录

    千次阅读 2019-12-30 17:03:49
    8、一维数组初始化的一般形式如下,即在定义数组时,对数组元素赋初值。其中初值表中依次放着数组元素的初值。 类型名 数组名[数组长度] = {初值表};(正确) 9、有说明语句int a[4][5];,则a[2]+3表示__。 (2分)...
  • 怎样定义和引用二维数组 二维数组常称为矩阵。把二维数组写成行(row)和列(column)的排列形式,可以有助于形象地理解二维数组的逻辑结构。 一.怎样定义二维数组 其基本概念与方法与一维数组相似,如: float pay[3]...
  •  数组初始化赋值是指数定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。  初始化方式有两种:1) 定义的同时初始化 2) 先定义,后初始化。 (1) 定义的同时初始化  ...
  • 对数器:很多测试算法的案例,通过使用对数器可以检验你的算法是否正确。 使用对数器: 1.有一个你要测试的方法a:这里以插入排序为例 template&amp;amp;amp;amp;lt;typename T&amp;amp;amp;amp;gt; void ...
  • 二维数组的引用总结

    千次阅读 2017-07-13 13:29:15
    以上方法都可以等价使用,对数组来说,没有值传递。  还不满足,还有其他的声明方式吗?回到本文开始提到的问题:可以用双重指针int**作为形参,接受二维数组实参吗?答案是肯定的,但是又局限性。用双重指针...
  • 在C++11标准中,可以传递指向数组首元素和尾后元素的指针,下面的代码我用了这种方法。这类似于容器类型的迭代器,但因为数组不是类类型,所以这两个函数不是成员函数,使用方法为: int * b...
  • 数组的初始化和简单使用

    千次阅读 2017-10-10 23:05:06
    关于数组,有好多值得...②当我们初始化数组的元素(注意是从第一个元素开始初始化)小于数组的大小时,其余未初始化的数组元素均被编译器初始化为0;例如:int arr[5]={1,2}; ③当我们有确定的元素个数时,在定义数
  • 二维数组的定义和引用

    千次阅读 2015-10-21 09:37:11
    面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,452
精华内容 7,780
关键字:

对数组元素地址的正确引用