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("
    ");
    }
    
  • 相关阅读:
    python中关于with以及contextlib的使用
    Python之Redis操作
    Python操作memecache
    COM组件技术名称解释
    C++11-新增正则表达式
    BSTR与char*、cstring、CComBSTR的转换
    ATL字符宏使用以及代码测试
    获取与一个磁盘的组织以及剩余空间容量有关的信息以及代码测试
    关于cstring ->string-> const char * 用U2A一步转换 错误的内存问题
    cstring、string、wstring、int、char*、tchar、 int、dword等相互转换代码输出测试
  • 原文地址:https://www.cnblogs.com/tigerlion/p/11191527.html
Copyright © 2011-2022 走看看