• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C 语言基础教程(我的C之旅开始了)[十]

C 语言基础教程(我的C之旅开始了)[十]

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言基础教程课程,编程基础教程c语言,c语言基础教程,零基础学c语言教程,java语言基础教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

27. 表达式(Expression)

   表达式由运算符和操作数组成。单独一个操作数是最简单的表达式。请看以下例子:

                     9
                    -4
                    +5
                 3 + 6
       a * ( b/c - d )
             e = 9 / 3
           f = ++e % 3

表达式中的表达式称为子表达式。例如:b/c 是 a * ( b/c - d ) 的子表达式。

    每个表达式都有一个值,这是 C 语言的一个重要属性。显而易见的,9 和 -4 的值就是 9 和 -4,3 + 6 的值就是 9 。e = 9 / 3 的值是 3 ,也就是是 = 号左边的变量 e 被赋予的值。我们再来看看下面这个表达式:

        8 - (a = 2 * 3)

想想看,它的值是多少?没错,就是 2 。但是,不推荐使用这种表达式,因为可读性太差。

28. 数组基础(上)
 

1. 数组简介

    数组(Array)由一系列同种数据类型的元素组成。编译器可以从数组声明中知道数组中元素的数目,以及这些元素的数据类型。例如:

       double dbl[20];        /* 包含 20 个 double 类型元素的数组 */
       int      c[12];        /* 包含 12 个 int 型元素的数组      */
       char    ch[40];        /* 包含 40 个 char 型元素的数组     */

方括号 [] 表明它们是数组,[] 里的数字表明数组包含的元素数目。

    数组中的元素是相邻的,初始化之前,元素的值可能是随机的。下图形象地表现了这种相邻关系。

       

使用数组名和下标(subscript number 或 index)就可以访问特定的元素。下标始于 0,止于 n - 1。例如:c[0] 是数组 c 的第一个元素,而 c[11] 是它的最后一个元素,也就是第 12 个元素。

 


2. 初始化

        int c[12] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

如上所示,我们使用大括号中一系列逗号分隔的值来初始化数组。我们把这个称之为初始化列表。大括号是必须的!逗号和值之间的空格可有可无。初始化后,数组 c 的第一个元素 c[0] 的值为 0,以此类推。

    下面的小程序输出数组 iarr 中所有元素的值。

        #include <stdio.h>

        int main(void)
        {
            int iarr[4] = { 0, 1, 2, 3 };
            int i = 2;

            printf("%d\n", iarr[0]);    /* 输出 0 */
            printf("%d\n", iarr[1]);    /* 输出 1 */
            printf("%d\n", iarr[i]);    /* 输出 2 */
            printf("%d\n", iarr[1+2]);  /* 输出 3 */

            return 0;
        }

如上所示,访问数组元素时,[] 里的可以是常量,可以是变量,也可以是表达式。[] 里还可以是返回值为整型的函数调用。总之,只要 [] 里的值是整数类型都可以。

    注意,上面的程序,如果把 int iarr[4] = { 0, 1, 2, 3 }; 改成 int iarr[4];(即没有初始化),则它里面的元素的值是随机的,也就是本来就存在于那段内存空间的值。如果改成 int iarr[4]; 后再把它放在 int main(void) 之前,则它里面的元素的值都是 0。具体原因我在后续的教程会说明。

    如果初始化列表中的值的个数少于数组元素个数,则余下的元素都会被初始化为 0。例如:

        int iarr[4] = { 0, 1 };

iarr[0] 和 iarr[1] 分别为 0 和 1;iarr[2] 和 iarr[3] 都被初始化为 0。注意,初始化列表中的值的个数可以少于数组元素个数,但是超过数组元素个数却是不对的!

    初始化数组时,[] 里可以留空。例如:

        int iarr[] = { 1, 2, 3 };

编译器会算出初始化列表中的值的个数,然后构造包含那么多个元素的数组。如上例,编译器会算出列表中一共有 3 个值,然后把 iarr 构造成包含 3 个元素的数组。例如:

        #include <stdio.h>

        int main(void)
        {
            int iarr[] = { 1, 2, 3 };

            printf("%d\n", iarr[0]);    /* 输出 1 */
            printf("%d\n", iarr[1]);    /* 输出 2 */
            printf("%d\n", iarr[2]);    /* 输出 3 */

            return 0;
        }

我们可以用以下表达式算出 iarr 中元素的个数:

        sizeof iarr / sizeof iarr[0]

其中,sizeof iarr 算出数组 iarr 占用的内存大小,sizeof iarr[0] 算出 iarr[0] 占用的内存大小(也就是数组 iarr 中每个元素占用的内存大小),它们相除就得出 iarr 的元素个数。sizeof 是一个运算符,具体用法我以后会说。

29. 数组基础(下)
 

1. 指派初始值(Designated Initializers)

    指派初始值这个特性是 C99 增加的,它允许我们直接初始化数组中特定的元素。C99 以前,如果我们要初始化数组中的某个元

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C 语言基础教程(我的C之旅开始了)[十]
  • C 语言基础教程(我的C之旅开始了)[九]
  • C 语言基础教程(我的C之旅开始了)[八]
  • C 语言基础教程(我的C之旅开始了)[七]
  • C 语言基础教程(我的C之旅开始了)[六]
  • C 语言基础教程(我的C之旅开始了)[五]
  • C 语言基础教程(我的C之旅开始了)[四]
  • C 语言基础教程(我的C之旅开始了)[三]
  • C 语言基础教程(我的C之旅开始了)[二]

相关文章

  • 2017-05-28解决VC++编译报错error C2248的方案
  • 2017-05-28C++基础入门教程(一):基础知识大杂烩
  • 2017-05-28C/C++中extern "C" 的作用分析
  • 2017-05-28C++读写INI配置文件的类实例
  • 2017-05-28C++ 中的Lambda表达式写法
  • 2017-05-28详解C语言中结构体的自引用和相互引用
  • 2017-05-28c语言读取csv文件和c++读取csv文件示例分享
  • 2017-05-28C语言之没有main函数的helloworld示例
  • 2017-05-28实现一个内存池管理的类方法
  • 2017-05-28VC实现五子棋游戏的一个算法示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++中关于委派(Delegates)的实现示例
    • C++ 中静态成员函数与非静态成员函数的区别
    • C/C++中extern "C" 的作用分析
    • 浅谈带缓冲I/O 和不带缓冲I/O的区别与联系
    • 详解C++编程中的变量相关知识
    • 函数指针的一些概念详解
    • VC实现对话框窗口任意分割
    • 成员初始化列表与构造函数体中的区别详细解析
    • 解析C++中四种强制类型转换的区别详解
    • OpenCV 2.4.3 C++ 平滑处理分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有