精华内容
下载资源
问答
  • 在c语言中引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为“数组名[下标]”,下标可以是整型常量...

    在c语言中引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为“数组名[下标]”,下标可以是整型常量或整型表达式。

    数组中只有一维数组,数组的大小必须在编译期作为常数确定。但C数组的元素可以是任何类型的对象,当然也可以是另一个数组,所以“仿真”出一个多维数组。

    数组名:

    指向该数组下标为0的元素的指针。

    数组下标:

    C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为“数组名[下标]”,下标可以是整型常量或整型表达式。

    任何一个数组下标运算都等同于一个对应的指针运算。

    即:a[i]=*(a i)=*(i a)=i[a] (后种写法绝不推荐)

    例:

    #include 

    void main()

    {

        int a[20]={0};

        *a=66;

        printf("a[0]: %d \n",a[0]);

        printf("0[a]: %d \n",0[a]);

        return;

    }

    结果为:

    a[0]: 66

    0[a]: 66

    写法很有趣。

    声明:

    本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。


    展开全文
  • c语言引用数组元素时其数组下标的允许的数据类型是什么发布时间:2020-07-30 11:56:52来源:亿速云阅读:621作者:Leahc语言引用数组元素时其数组下标的允许的数据类型是什么?很多新手对此不是很清楚,为了帮助大家...

    c语言引用数组元素时其数组下标的允许的数据类型是什么

    发布时间:2020-07-30 11:56:52

    来源:亿速云

    阅读:621

    作者:Leah

    c语言引用数组元素时其数组下标的允许的数据类型是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在c语言中,引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。数组是用来存储一系列数据,用于区分数组的各个元素的数字编号称为下标;下标只能为整型常量或整型表达式,如为小数时,将自动取整。

    C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

    用于区分数组的各个元素的数字编号称为下标。

    表示方法

    数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。

    一维数组元素的一般形式为:数组名[下标]

    二维数组元素的一般形式为:数组名[下标][下标]

    其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。

    例如,a[5]、a[i+j]、a[i++]都是合法的数组元素。

    数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。

    下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值; 而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量, 后者可以是常量,变量或表达式。

    一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。课程 成绩姓名Math C DBASE

    张 80 75 92

    王 61 65 71

    李 59 63 70

    赵 85 87 90

    周 76 77 85

    可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量l为全组各科总平均成绩。编程如下:void main()

    {

    int i,j,s=0,l,v[3],a[5][3];

    printf("input score\n");

    for(i=0;i<3;i++){

    for(j=0;j<5;j++)

    { scanf("%d",&a[j][i]);

    s=s+a[j][i];}

    v[i]=s/5;

    s=0;

    }

    l=(v[0]+v[1]+v[2])/3;

    printf("math:%d\nc languag:%d\ndbase:%d\n",v[0],v[1],v[2]);

    printf("total:%d\n",l);

    }

    程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来, 退出内循环后再把该累加成绩除以5送入v之中,这就是该门课程的平均成绩。

    外循环共循环三次,分别求出三门课各自的平均成绩并存放在v数组之中。退出外循环之后,把v[0],v[1],v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。

    看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

    展开全文
  • 引用数组元素

    千次阅读 2019-04-24 17:15:47
    有 *(a+i), *(p+i) 两种表现形式,都是用间接访问的方法来引用数组元素。 (2)下标法。有a[i] 和 p[i] 两种形式。在编译这两种形式也要处理成 *(a+i) 或 *(p+i) ,即先按“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 究竟
    是哪个元素,不易看出,而下表法更直观些。

    展开全文
  • 数组名在纯被引用它的含义是指向数组第一个元素的指针常量。 1 一维数组 ...1.1 表达式中的数组名 ...当定义一个一维数组后,元素以地址...当在程序的表达式中引用数组它被当成指向数组第一个元素的指针常量。

    数组名在纯被引用时它的含义是指向数组第一个元素的指针常量。


    1 一维数组

    1.1 表达式中的数组名

    当定义一个一维数组后,元素以地址连续的形式存储在内存中。当在程序的表达式中引用数组名时它被当成指向数组第一个元素的指针常量。


    Figure1:一维数组名在被引用时的含义

    TYPE 表示C语言中的一种数据类型。当定义一个维数为7每个元素的类型为TYPE的数组a之后,系统会为其分配一段内存,假设首地址为0x13145200。当数组名a用在表达式中时,a就是指向数组a中的第一个元素a[0],它是一个指向类型为TYPE的指针常量即0x13145200。a + 1表示下一个元素的地址,a + 1的具体值得根据TYPE类型在内存中所在大小来决定。当TYPE为char 类型时,a就是指向类型为char的a[0]元素的指针常量,a + 1的值就是0x13145201。当TYPE为int时,a就是一个指向类型为int的a[0]元素的指针常量,a+1的值就有可能(不同系统int所占字节有可能不同)为0x13145204。


    不同类型元素的有效地址(大地址或者小地址)细节不需要用户关心。

    1.2一维数组名的特殊含义

    在程序中定义char  a[7];


    (1) sizeof(a)

    printf("sizeof(a):%d\n", sizeof(a)); 语句输出的值为7。按理说,数组名作为一个指针常量,它的值应该为4字节(32位系统之上常见的指针变量所占内存大小)。说明在这样的方式下引用数组名时数组名不再是指针常量的含义,sizeof(a)将返回整个数组a的长度,此时数组名a方显出几分数组的气息。

    (2)&a

    printf("sizeof(&a):%d\n", sizeof(&a));   在 Debian  GNU/Linux (关于sizeof(&a)的值还得看具体的编译器)下的输出来的值为4,这倒是挺符合分析结果。&a表示取a(不管a的类型如何)的指针,所以它占4字节内存。&a是一个指向类型为TYPE的整个数组的指针常量,而非指向一个指针的指针。

    2 二维数组

    2.1 表达式中的二维数组名

    二维数组跟一维数组一样,其数组名都是指向数组的第一个元素的指针常量。跟一维数组不同的是,二维数组的第一维的元素其实是另一个数组。在C语言中,多维数组可以被看作一维数组,如char m[2][7];创建了数组m,它可以被看作是一个一维数组,一共有两个元素,只是每个元素是包含7个char型元素的数组。以m数组图示笔记,

    Figure2:二维数组名被引用时的含义

    二维数组m的第一维为二维数组的元素,每个元素是包含7个char类型元素的数组。数组名m为指向二维数组第一个元素的指针常量,假设为此二维数组分配内存的首地址为0x14035200,m就代表0x14035200常量。是一个指向一个类型为char维数为7的一维数组的指针常量。m + 1的值视m的类型,是一个指向一个类型为char维数为7的一维数组的指针常量,则m + 1就是下一个类型为char维数为7的一维数组的地址。

    2.2 二维数组名的特殊含义

    (1) sizeof(m)

    printf("sizeof(m):%d\n", sizeof(m));的值为14,虽然m本身为指向m[0]的指针常量,但sizeof(m)返回整个二维数组m的在内存中所占的字节数。


    (2)&m

    在Debian GNU/Linux下,printf("sizeof(&m): %d\n",sizeof(&m));      输出的值为4,因为此时的编译器将&m视为一个指针。不过此值还得看具体的编译器。&m是指向整个二维数组m的指针常量。不过这些结论都最好在对应的编译器下测试一下。

    3 访问数组元素

    在程序中除了要用到数组名之外,很多时候也需要访问元素。数组元素的访问有间接访问和直接访问两种方式。


    3.1 间接访问

    间接访问数组元素的方式就是通过数组名加下标的方式。如a[2]访问数组a的下标为2即数组中的第三的一个元素。m[1][2]表示访问第二个元素(数组)的第三个元素。


    3.2 直接访问

    所有的间接访问形式都会被编译器转换为直接访问的方式。直接的访问形式都是通过地址访问的。


    (1) 一维数组

    如间接访问数组元素a[2]的直接访问方式为*(a +2)。


    (2) 二维数组

    理解二维数组的直接访问形式需要理解针对于二维数组来说元素的含义,二维数组中只具有第一维下标的元素是二维数组的一个元素。m[1][2]直接访问形式为*( *(m + 1) + 2),m是二维数组m第一个元素的指针常量,m + 1是二维数组m第二个元素的指针常量。此时m + 1指向类型为char、元素个数为7的一维数组,相当于&a。*(m + 1)表示取得这个一维数组中第一个元素的地址,( *(m + 1) + 2)表示在一维数组首元素地址的基础之上偏移两个元素的地址,得到第三个元素的地址,从而*( *(m + 1) + 2)取得了对应位置上的数组元素。

    直接和间接访问的区别不仅在于形式,有时候数组元素的直接访问形式的程序效率会更高。在程序 花大部分时间运行在访问数组元素代码时,这样的优化就会显现效果。

    SMBox Note OVER.
    展开全文
  • 通过指针引用数组元素

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

    千次阅读 2016-07-22 20:04:48
    c语言_指针引用数组元素并打印输出 #include void main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4]; int row,col; p=a; /*指针p指向元素为4的数组*/ /*打印输出数组指针p指向的...
  • 1.数组指针:即指向数组的指针 ...2.通过指针引用数组元素的基本方法 (1)小标法:a[i]。 (2)指针法:* (a+i) 或 * (p+i) 或 p[i]。其中,a是数组名,p=a,p是指向数组元素的指针变量。 问:为什么*
  • 引用数组元素的四种方式

    千次阅读 2020-02-29 23:10:58
    //注意a++是不可的,因为a本来就代表了数组的首地址,a是不可改变的。 { printf ( "%d\n" , * p ) ; } printf ( "-----------------\n" ) ; for ( p = a , i = 0 ; i < 5 ; i ++ ) ...
  • 用指针引用数组元素并打印输出

    千次阅读 2015-07-20 18:31:39
    指针与数组结合进行的运算
  • 一维数组元素引用方法主讲人李刚目录1一维数组元素引用实例演示2一维数组元素引用的格式3一维数组元素引用的举例1 一维数组元素引用实例演示1. 一维数组元素引用实例演示实例介绍影院座位连续人员调动内存空间连续...
  • 通过指针引用数组元素-将数组a中n个整数按相反顺序存放 可参考: 两个顺序线性表的合并,关于数组指针的操作。 http://blog.csdn.net/jiezou007/article/details/7906606 参考:字符串的反转,...
  • 用四种不同的方法引用数组元素

    千次阅读 2011-05-17 18:04:00
      分别用数组下标,数组名称和偏移量,指针下标,指针和偏移量这四种方法调用数组元素 #include int main() { int b[]={10,20,30,40,50}; int *bptr = b; int i; printf( "use of ...
  • 你想要获得指向数组中对象的引用以访问它们的属性或是向对象发送消息。可以使用objectAtIndex:方法获取数组中位于某个整数位置的对象引用...同时NSArray 对象提供了count 属性,可以通过这个属性获得数组元素的数量。
  • 引用数组

    2019-09-29 19:03:02
    引用数组: 1.引用数组在语法上和基本数据类型数组是没有区别的 2.多维数组其实也时引用数组 3.引用数组存放的是对象的引用,而基本数据类型...否则,当调用数组元素(对象),会产生NullPointerException(空指针异常) ...
  • Matlab中数组元素引用

    千次阅读 2019-09-12 17:13:53
    原文链接 :... Matlab中数组元素是按列存储比如说下面的二维数组A= 816 357 492Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页...
  • ②在引用数组元素时指针的运算 ③通过指针引用数组元素 ④用数组名作函数参数 ⑤通过指针引用多维数组 ①数组元素的指针 一个变量有地址,一个数组包含若干元素,每个数组元素都有相应的地址 指针变量可以...
  • C++ 引用 交换数组元素

    千次阅读 2016-11-03 19:16:42
    #include using namespace std; void swap(int &a,int &b){ a+=b; b=a-b; a=a-b; } void swap2(int a,int b){ int temp=a; a=b; b=temp; } int main(){ int list[5]={1,2,3,4,5};... swap(a,
  • 如题,今天笔者在使用map函数发现很多教程文档并没有说清楚其中的一个细节,比如对于map函数的说明,菜鸟教程提到 注意:map() 不会改变原始数组。 比如以下例子: var array1 = [1, 4, 9, 16]; // pass a ...
  • Matlab中数组元素引用——三种方法

    千次阅读 2018-07-19 12:44:25
    1.Matlab中数组元素引用有三种方法 1.下标法(subscripts)2.索引法(index)3.布尔法(Boolean) 注意:在使用这三种方法之前,大家头脑一定要清晰
  • 1.不能建立引用数组,但是可以建立数组的引用。 c++中,引用可以说只是某个变量的别名,所谓别名,是和指针类型区分开的,指针类型可以指向某个变量,而且指针类型本身也是一个变量,而引用本身实际上不是一个变量...
  • matlab中数组元素引用

    千次阅读 2015-03-15 20:36:19
    matlab中数组元素引用 A =[1 2 3 ; 4 5 6 ; 7 8 9] matlab中的数组是按列存储的,matlab中的存储的顺序为1 4 7 2 5 6 3 6 9。 matlab数组元素引用的方法有三种。 1)下标法 A(i,j),其中i,j可以为一维向量、标量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 470,203
精华内容 188,081
关键字:

引用数组元素时