1. //
  2. // main.c
  3. // day08
  4.  
  5. #include <stdio.h>
  6.  
  7. int main(int argc, const char * argv[]) {
  8.  
  9. /*
  10. int score = 99;
  11. int score2 = 88;
  12. int scores[88] = {1, 3, 5, 7};
  13. 元素类型 数组名称[元素个数];
  14. */
  15. /*
  16. // 0, 1, 2, 3
  17. int scores[88] = {1, 3, 5, 7};
  18. int scores2[88] = {2, 3, 5, 7};
  19. int scores3[88] = {1, 9, 5, 7};
  20. */
  21. /*
  22. 二维数组: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组
  23. 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数];
  24. 元素类型 数组名称[行数][列数];
  25.  
  26. 元素类型: 说明二维数组中每个一维数组存储什么类型的数据
  27. 一维数组的个数: 说明二维数组有多少个元素
  28. 每个一维数组的元素个数 : 说明二维数组中每一个一维数组的元素个数
  29. */
  30. int scoress[][] =
  31. {
  32. {, , , , }, // 0 // 每一个一维数组都是二维数组的一个元素
  33. {, , , , },//
  34. {, , , , } //
  35. };
  36.  
  37. char names[][] =
  38. {
  39. // 0 1 2
  40. {'l', 'n', 'j'}, //
  41. {'x', 'm', 'g'} //
  42. };
  43. // 如何获取二维数组中的一维数组的元素的值
  44. printf("%c\n", names[][]);
  45.  
  46. // 如何遍历二维数组
  47. // 思路: 1.取出二维数组的每一个元素(取出二维数组中的一维数组)
  48. // 2.遍历一维数组
  49.  
  50. for (int i = ; i < ; i++) { // 0 , 1
  51. // 1.取出一维数组
  52. // names[i];
  53. for (int j = ; j < ; j++) { // 0 , 1 , 2
  54. printf("name[%i][%i] = %c\n", i, j, names[i][j]);
  55. }
  56. }
  57. return ;
  58. }
  1. //
  2. // main.c
  3. // 二维数组注意点
  4. //
  5. // Created by xiaomage on 15/6/12.
  6. // Copyright (c) 2015年 xiaomage. All rights reserved.
  7. //
  8.  
  9. #include <stdio.h>
  10.  
  11. int main(int argc, const char * argv[]) {
  12. // 1.二维数组的多种初始化方式
  13. // 1.定义的同时初始化
  14. int names[][] =
  15. {
  16. {'l', 'n', 'j'},
  17. {'x', 'm', 'g'}
  18. };
  19. // 2.先定义再初始化
  20. int names2[][];
  21. names2[][] = 'l';
  22. names2[][] = 'n';
  23. names2[][] = 'j';
  24.  
  25. names2[][] = 'x';
  26. names2[][] = 'm';
  27. names2[][] = 'g';
  28.  
  29. // 3.完全初始化
  30. int names3[][] =
  31. {
  32. {'l', 'n', 'j'},
  33. {'x', 'm', 'g'}
  34. };
  35.  
  36. // 4.不完全初始化
  37. int names4[][] =
  38. {
  39. {'l', 'n'},
  40. };
  41.  
  42. // 5.省略元素个数的两种写法
  43. // 明确的告诉二维数组, 我们有2个一维数组
  44. char names5[][] =
  45. {
  46. 'l', 'n', 'j',
  47. 'x', 'm', 'g'
  48. };
  49. char names15[][] =
  50. {
  51. 'l', 'n', 'j',
  52. 'x', 'm'
  53. };
  54.  
  55. // 没有告诉二维数组我们有几个一维数组
  56. // 如果在"定义的同时"进行初始化, 那么一位数组的个数可以省略 \
  57. 系统会自动根据每一个一维数组能够存放多少个元素, 自动根据初始化的值推断出二维数组中一共有多少个元素(多少个一维数组)
  58. char names6[][] =
  59. {
  60. 'l', 'n', 'j',
  61. 'x', 'm', 'g',
  62. 'n', 'b'
  63. };
  64.  
  65. // 6.错误写法
  66. // 注意点: 每个一维数组的元素个数不能省略
  67. /*
  68. int names7[2][] =
  69. {
  70. {'l', 'n', 'j'},
  71. {'x', 'm', 'g'}
  72. };
  73. */
  74. /*
  75. // 搞不清楚应该分配多大的存储空间, 以及搞不清楚应该把哪些数据赋值给第一个数组, 以及哪些数据赋值给第二个数组
  76. int names7[2][] =
  77. {
  78. 'l', 'n', 'j',
  79. 'x', 'm', 'g'
  80. };
  81. */
  82.  
  83. return ;
  84. }
  1. //
  2. // main.c
  3. // 二维数组和函数
  4. //
  5. // Created by xiaomage on 15/6/12.
  6. // Copyright (c) 2015年 xiaomage. All rights reserved.
  7. //
  8.  
  9. #include <stdio.h>
  10. void change(int nums[]);
  11. void change2(char names[][]);
  12. void change3(char values[]);
  13. void change4(char value);
  14.  
  15. int main(int argc, const char * argv[]) {
  16.  
  17. int nums[] = {, };
  18. // 数组的名称就是数组的地址,保存的是数组第0个元素的地址,
  19. // &nums == nums == &nums[0]
  20. change(nums);
  21. printf("nums[0] = %i\n", nums[]);
  22.  
  23. char names[][] =
  24. {
  25. {'l', 'n', 'j'},
  26. {'x', 'm', 'g'}
  27. };
  28. // &names == names == &names[0] == &names[0][0] , names就是数组的地址 , 都是一样的。
  29. printf("&names = %p\n", &names);
  30. printf("names = %p\n", names);
  31. printf("&names[0] = %p\n", &names[]);
  32. printf("&names[0][0] = %p\n", &names[][]);
  33.  
  34. // 二维数组名称作为函数参数传递, 是传递的地址
  35. change2(names);
  36. //names[0] == 一维数组
  37. change3(names[]);
  38.  
  39. // names[0][0] == 一维数组的一个元素 == 值
  40. change4(names[][]);
  41.  
  42. printf("names[0][0] = %c\n", names[][]);
  43. return ;
  44. }
  45.  
  46. // 基本数据类型
  47. void change4(char value)
  48. {
  49. value = 'E';
  50. printf("我执行了\n");
  51. }
  52.  
  53. // 以后只要看到函数的参数是一个数组, 那么就是地址传递
  54. // 在函数中修改形参的值会影响到参数
  55. void change3(char values[])
  56. {
  57. values[] = 'Q';
  58. printf("我执行了\n");
  59. }
  60.  
  61. void change2(char values[][])
  62. {
  63. values[][] = 'w';
  64. printf("我执行了\n");
  65. }
  66.  
  67. // 数组作为函数的参数传递, 修改形参的值会影响到实参
  68. void change(int nums[])
  69. {
  70. nums[] = ;
  71. printf("我执行了\n");
  72. }

c15--二位数组的更多相关文章

  1. C++ 出现bug :二位数组的操作运算,求非对角线的元素的和

    编写一个通用程序,求出二位数组(行数和列数必须相等)的非对角线的元素之和,试建立类MATRIX完成上述功能 #include<iostream> using namespace std; ...

  2. PHP 之二位数组根据某个字段排序封装

    /** * @param $array * @param $keys * @param string $sort * @return array */ function arraySort($arra ...

  3. java中Arrays.sort()对二位数组进行排序

    int [][]a = new int [5][2]; //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升 ...

  4. php二位数组合并

    转自:http://www.cnblogs.com/losesea/archive/2013/06/14/3134900.html 题目:有以下2个二维数组 1$a=Array(0 => Arr ...

  5. 【shell】构造并遍历二位数组的一种用法

    参考shell数组的部分操作用法,实现了构造和遍历二维数组的一种方式,具体如下: #数组元素以空格分割 sites=("www.a.com www.b.com www.c.com www.d ...

  6. shell二位数组——终端字符下降动画

    猜想:Shell支持关联数组,可以利用关联数组模拟二维数组. [验证猜想] #!/bin/bash array[1,1]=1 array[2,1]=2 array[3,1]=3 for i in `s ...

  7. vector创建二位数组

    默认初始化vector vector<vevtor<int> > arr(row, vector<int>(col, 0)); //指定行大小为row,列为col, ...

  8. Rotate Image(二位数组顺时针旋转)

    问题描述: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockw ...

  9. php 按照二位数组中某个指定的字段进行排序

    /** * 按照二维数组中某个指定的某个字段进行排序 * @param $array 需要被排序的数组 * @param $flag 排序的标志 1,SORT_DESC 降序 2,SORT_ASC 升 ...

  10. 剑指offer:二位数组中的查找

    准备找实习期间,复习一下数据相关内容,刷刷题. 题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样 ...

随机推荐

  1. 记录一个MySQL的问题

    昨天做asp.net mvc程序,用mysql.data.entity.ef6做数据连接. 程序都是正常的,但就是提交数据的时候总是提示 Specified key was too long; max ...

  2. 【java并发】(1)深入理解volatile关键字

    volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...

  3. P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)

    题目描述 汤姆斯生活在一个等级为0的星球上.那里的环境极其恶劣,每天12小时的工作和成堆的垃圾让人忍无可忍.他向往着等级为N的星球上天堂般的生活. 有一些航班将人从低等级的星球送上高一级的星球,有时需 ...

  4. PHP 数组基础知识

    php 数组基础知识function abc($a,$b,$c = 0){ echo $a,$b,$c;}abc(1,3); //调用方法 ////可变参数function def(){ $arr = ...

  5. VMWare 安装Centos 6.9

    1.新建虚拟机 (1)点击文件-->新建虚拟机 (2)选择 自定义(高级)--> 下一步 (3)选择Workstation 12.0 --> 下一步 (4)选择 稍后安装操作系统 - ...

  6. ASP.NET Cache 实现依赖Oracle的缓存策略

    ASP.NET 中的缓存提供了对SQL依赖项的支持,也就是说当SQL SERVER数据库中的表或行中的数据被更改后,缓存中的页面就失效,否则,页面输出可一直保留在缓存当中.这确实为程序员提供了方便.但 ...

  7. C++ (带有默认参数的函数参数)缺省函数参数

    缺省参数?在C++中,允许实参的个数与形参的个数不同.在声明函数原型时,为一个或者多个形参指定默认值,以后调用这个函数时,若省略某一个实参,c++则自动的以默认值作为相应参数的值. 实列说明:#inc ...

  8. Docker 导入镜像报错:open /var/lib/docker/tmp/docker-import-743441288/redis-3.0.7/json: no such file or directory

    下载好了redis的tar包,然后导入redis镜像是报错open /var/lib/docker/tmp/docker-import-743441288/redis-3.0.7/json: no s ...

  9. Lua循环结构while循环、repeat 循环、for循环_学习笔记03

    Lua循环结构while循环.repeat 循环.for循环 while语法结构 while 循环条件 do 循环体  end --1.输出1到100 index = do print(index) ...

  10. 15.5.1【Task实现细节】 生成的代码

    还在吗?我们开始吧.由于深入讲解需上百页的篇幅,因此这里我不会讲得太深.但我会提 供足够的背景知识,以有助于你对整个结构的理解.之后可通过阅读我近些年来撰写的博客文章, 来了解更加错综复杂的细节,或简 ...