zoukankan      html  css  js  c++  java
  • 第十章 数组和指针

    一 数组

    数组由一系列相同的元素构成。

    告诉编译器需要一个数组的方式叫数组声明(array declaration),声明需要告诉编译器数组元素的个数和类型。

     初始化

    int main(void)
    
    {
    
      int powers[8] = {1,2,4,8,16,32,64,128};
      ... }

    未初始化的数组元素值为内存中的实际值,此值是不确定的,不过如果初始化了部分数组,编译器会将剩下的元素初始化为0.

    一种确定数组长度的方法:sizeof(powers)/sizeof(powers[0]),这种方法无法测定出有效数组元素的长度。

    指定初始化项目(C99)

    C99新特性:此特性允许选择对某些元素进行初始化。比如,只对数组最后一个元素初始化:

    //传统语法:
    int arr[6] = {0,0,0,0,0,212};
    //C99语法:
    int arr[6]={[5]=212};
    //C99语法高级用处:结果为:31 29 0 0 31 30 31 0 0 0 0 0 0 
    int days[12] = {31,28,[4]=31,30,31,[1]=29};

     赋值

    声明后的数组可借助其索引(即下标)对其进行赋值

    错误的赋值方式:

    #define SIZE 5
    int main(void)
    {
      int oxen[SIZE] = {5,3,2,8};
      int yaks[SIZE];
      yaks = oxen;//不允许
      yaks[SIZE] = oxen[SIZE];//不正确
      yaks[SIZE] = {5,3,2,8];//不起作用      
    }

     数组边界

    处于C信任程序员的原则,C编译器不检查索引的合法性。以让C程序的运行速度更快。

    减少程序员出错可以记住一点:数组从0计数,以及在数组声明中使用符号常量,以保证整个程序中数组大小始终一致。

    指定数组大小

    int n =5;//可以
    int m=8;//可以
    float a1[5];//可以
    float a2[5*2+1];//可以
    float a3[sizeof(int)+1];//可以,sizeof表达式被认为是一个整数常量,而const值却不是整数常量
    float a4[-4];//不可
    float a5[0];//不可
    float a6[2.5];//不可
    float a7[(int)2.5];//可以
    float a8[n];//c99之前不可以
    flaot a9[m];//c99之前不可以

    C99允许这两个声明,但这创建了一种新数组,称为变长数组(variable-length array) 简称VLA。VLA的好处:更适合做数值运算;限制:声明时不能初始化。

  • 相关阅读:
    Python开发环境Spyder介绍
    Python干货整理之数据结构篇
    通过Python爬虫按关键词抓取相关的新闻
    疫情后来场说走就走的旅行,Python制作一份可视化的旅行攻略
    详细介绍去一年在 PyPI 上下载次数最多的 Python 包
    Python错误与异常
    python爬虫爬取2020年中国大学排名
    微信史上最短的一行功能代码:拍一拍
    Python爬取某宝商品数据案例:100页的价格、购买人数等数据
    我的SAS菜鸟之路7
  • 原文地址:https://www.cnblogs.com/chitanta/p/9440252.html
Copyright © 2011-2022 走看看