zoukankan      html  css  js  c++  java
  • C语言讲义——数组

    数组是:

    • 一组数据
    • 一组类型相同的数据
    • 在计算机底层,数组是一块连续的内存

    为什么使用数组?

    一年12个月
    int m1=1, m2=2, m3=3, ... 麻烦

    数组示例:

    #include <stdio.h>
    int main(int argc, char *argv[]) {
    	// 数组赋值
    	int month[] = {1,2,3,4,5,6,7,8,9,10,11,12};
    
    	// 求数组长度
    	int len = sizeof(month)/sizeof(int);
    
    	// 访问数组元素
    	int i =0;
    	for(i =0; i<len; i++) {
    		printf("%d月_", month[i]);
    	}
    	return 0;
    }
    

    注意数组不要越界

    数组越界,C语言不管!
    比如下例中,变量_test会被循环破坏!

    #include <stdio.h>
    int main(int argc, char *argv[]) {
    	char arr[3];
    	int _test = 1;
    
    	printf("循环前:_test = %d
    ", _test);
    	int i = 1;
    	for(i = 0 ; i<10; i++) {
    		arr[i] = 9;
    	}
    	printf("循环后:_test = %d
    ", _test);
    
    	return 0;
    }
    

    循环后的结果并不是确定的:

    循环前:_test = 1
    循环后:_test = 2313
    

    使用函数输出数组

    C语言中,函数内无法获取数组长度,需要把数组的长度通过参数传入。

    #include <stdio.h>
    
    //返回值:void
    //数组作参数:int arr[]
    //声明简化:int[]
    //需要传数组元素的个数
    void printArray(int[],int);
    
    int main(int argc, char *argv[]) {
    	int a[5]= {1,3,5,7,9};
    	// 先求数组元素的个数
    	int nLen = sizeof(a)/sizeof(int) ;
    	printArray(a, nLen);
    
    	return 0;
    }
    
    void printArray(int arr[],int len) {
    	int i=0;
    	for(i = 0; i<len; i++) {
    		printf("%d ", arr[i]);
    	}
    	printf("
    ");
    }
    

    数组的赋值

    *注意:纯C语言中,[变量/const常量]不能用于定义数组长度,C++中可以。本例使用宏定义来表示数组长度。

    #include <stdio.h>
    #define ARR_LEN 5
    void printArray(int[],int);
    
    int main(int argc, char *argv[]) {
    	// 分别赋值
    	int a[]= {1,3,5,7,9};
    	printArray(a, ARR_LEN);
    
    	// 统一赋值
    	int b[ARR_LEN]= {0};
    	printArray(b, ARR_LEN);
    
    	// 循环赋值
    	int c[ARR_LEN];
    	int i = 0;
    	for(i; i<ARR_LEN; i++ ) {
    		c[i]=i*10;
    	}
    	printArray(c, ARR_LEN);
    
    	return 0;
    }
    
    void printArray(int arr[],int len) {
    	int i=0;
    	for(i = 0; i<len; i++) {
    		printf("%d ", arr[i]);
    	}
    	printf("
    ");
    }
    
  • 相关阅读:
    dmesg 时间转换
    [转载]Linux性能测试 ss命令
    [转载]Python高效编程技巧
    [转载]Latency Numbers Every Programmer Should Know
    几道有意思的智力面试题
    单网卡多ip配置
    [转]Office visio 2007 打开后死机,提示关闭
    [转]C++的五种内存存储区
    [转]Linux性能测试 pmap命令
    利用wojilu框架仿一个网站的全过程(Step by Step利用wojilu框架开发网站系列序言)
  • 原文地址:https://www.cnblogs.com/tigerlion/p/11191527.html
Copyright © 2011-2022 走看看