文档章节

学点 C 语言(19): 数据类型 - 数组

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 671
阅读 6
收藏 0

1. 数组的标志是 []:
#include <stdio.h>

int main(void)
{
    int nums[3];

    nums[0] = 11;
    nums[1] = 22;
    nums[2] = 33;

    printf("%d, %d, %d", nums[0], nums[1], nums[2]);
    
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

2. 数组的大小和维数:
#include <stdio.h>

int main(void)
{
    int nums[10];

    printf("数组大小是: %d\n", sizeof(nums));
    printf("数组维数是: %d\n", sizeof(nums)/sizeof(nums[0]));
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

3. 遍历数组:
#include <stdio.h>

int main(void)
{
    int nums[10];

    int i;
    for (i = 0; i < sizeof(nums)/sizeof(nums[0]); i++) 
        nums[i] = i * i;
        
    for (i = 0; i < sizeof(nums)/sizeof(nums[0]); i++) 
        printf("%d\n", nums[i]);

    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

对字符串数组, 我们也可以这样想...
#include <stdio.h>

int main(void)
{
    char cs[] = "ABCDEFG";
    int i;
    for (i = 0; cs[i]; i++) {   /* cs[i] 为假时, 就到了那个空字符了 */
        printf("%c\n", cs[i]);
    }
    
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

4. 对一维数组, 可以不指定维数, 它能自动识别:
#include <stdio.h>

int main(void)
{
    double ds[] = {1.1, 2.2, 3.3, 4.4};
    
    int count = sizeof ds / sizeof ds[0];
    int i;
    
    for (i = 0; i < count; i++) {
        printf("%.1f\n", ds[i]);
    }
    
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

4. 不指定维数的数组常常会用于字符串:
#include <stdio.h>

int main(void)
{
    char str1[] = "Builder";

    /* 假如不怕麻烦可以这样初始化 */
    char str2[8] = {'B','u','i','l','d','e','r','\0'};
    
    unsigned i;
    for (i = 0; i < sizeof str1/sizeof str1[0]; i++) {
        printf("%c", str1[i]);    
    }

    printf("\n%s", str1);
    printf("\n%s", str2);
    
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

5. 二维数组:
#include <stdio.h>

int main(void)
{
    int nums[3][4] = {
                       {11,12,13,14},
                       {21,22,23,24},
                       {31,32,33,34}
                     };

    printf("%d,%d,%d\n", nums[0][2], nums[1][2], nums[2][2]);

    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

5. 可以并只能省略第一个维数:
#include <stdio.h>

int main(void)
{
    int nums[][4] = {
                       {11,12,13,14},
                       {21,22,23,24},
                       {31,32,33,34}
                     };

    printf("%d,%d,%d\n", nums[0][2], nums[1][2], nums[2][2]);

    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

6. 多维数组:
#include <stdio.h>

int main(void)
{
    int nums[2][3][4] = {
                          {
                            {111,112,113,114},
                            {121,122,123,124},
                            {131,132,133,134}
                          },
                          {
                            {211,212,213,214},
                            {221,222,223,224},
                            {231,232,233,234}
                          }
                        };

    printf("%d,%d,%d\n", nums[0][0][0], nums[1][1][1], nums[1][2][2]);
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

7. 多维数组也是可以并只能省略第一个维数:
#include <stdio.h>

int main(void)
{
    int nums[][3][4] = {
                          {
                            {111,112,113,114},
                            {121,122,123,124},
                            {131,132,133,134}
                          },
                          {
                            {211,212,213,214},
                            {221,222,223,224},
                            {231,232,233,234}
                          }
                        };

    printf("%d,%d,%d\n", nums[0][0][0], nums[1][1][1], nums[1][2][2]);
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

8. 字符串数组:
#include <stdio.h>

int main(void)
{
    char css[][10] = {
                       "AAA",
                       "BBB",
                       "CCCCCCC"
                     };
    size_t i;
    for (i = 0; i < sizeof(css)/sizeof(css[0]); i++) {
        printf("%s\n", css[i]);    
    }
    
    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

9. 没有初始化的局部数组变量, 包含的是一堆垃圾值:
#include <stdio.h>

int ns1[10];     /* 这个会初始化为空 */

int main(void)
{
    int ns2[10]; /* 这个不会初始化 */

    int i;
        
    for (i = 0; i < sizeof(ns1)/sizeof(ns1[0]); i++) 
        printf("%d\n", ns1[i]);

    printf("------------\n");
    
    for (i = 0; i < sizeof(ns2)/sizeof(ns2[0]); i++) 
        printf("%d\n", ns2[i]);

    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

10. 初始化数组为空其实很简单:
#include <stdio.h>

int main(void)
{
    int ns1[10] = {NULL}; /* 或 {0} */
    int ns2[2][3][4] = {0};

    int i;
    for (i = 0; i < sizeof(ns1)/sizeof(ns1[0]); i++) 
        printf("%d\n", ns1[i]);

    printf("---------\n");
    printf("%d\n", ns2[1][2][3]);

    getchar();
    return 0;
}

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/11/27/1342482.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
Python Array数组和矩阵基本运算

numpy还是很强大的,这里把一些矩阵基本操作做一些整理,方便大家,也方便我自己码代码的时候查找。 有句话对于我这个初学者来说觉得还是挺符合的,翻书看视频浏览教程贴啊什么的,会发现很多...

xiaoxin
07/31
0
0
C语言编程新手学习基础知识点大总结!小白入门必备

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/13
0
0
菜鸟数据科学入门03 - NumPy 数组基础和基本操作

回顾: 菜鸟数据科学入门01 - 工具包概略 菜鸟数据科学入门02 - IPython 基础 为什么用 NumPy? NumPy 是一个用于科学计算的基础 Python 库(安装说明)。它可以让你在 Python 中使用向量和数...

Kidult
2017/12/26
0
0
想做程序员,C语言可以开发哪些项目?

(1)C语言是面向过程的,而C++是面向对象的 (2)C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运...

小辰GG
2017/12/21
0
0
学习大数据为什么最好有java语言基础?

  本文需要5分钟左右阅读完成,建议收藏以后阅读,里面都是干货,可以亲自试验一下,如果觉得好用可以帮忙点赞转发一下,谢谢!交流学习java大数据可以加群460570824。   计算机编程语言...

java分享
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud SpringBoot mybatis分布式Web应用的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用...

itcloud
16分钟前
0
0
c++ std::bind和std::function

定义于头文件 <functional> std::bind 函数绑定,https://zh.cppreference.com/w/cpp/utility/functional/bind // bind 用例#include <iostream>#include <functional> // 自定义的一......

SibylY
19分钟前
0
0
SecureCRT的安装与破解(过程很详细!!!)

SecureCRT的安装与破解(过程很详细!!!) SecureCRT的安装与破解(过程很详细!!!) 使用SecureCRT可以方便用户在windows环境下对linux主机进行管理,这里为大家讲一下SecureCRT的破解方...

DemonsI
23分钟前
0
0
介绍几款可用的web应用防火墙

目前有两款,基于软件和基于应用程序的web应用防火墙。基于软件的产品布置在Web服务器上,而基于应用程序的产品放置在Web服务器和互联网接口之间。两种类型的防火墙都会在数据传入和传出web...

上树的熊
30分钟前
1
0
用Visual Studio开发以太坊智能合约

区块链和以太坊 自从我熟悉区块链、以太坊和智能合约以来,一直失眠。 我一直在阅读,阅读和阅读,最后我能够使用一些工具,他们建议使用以太坊网站官方客户端应用程序(Ethereum Wallet)也...

geek12345
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部