c15--二位数组
//
// main.c
// day08 #include <stdio.h> int main(int argc, const char * argv[]) { /*
int score = 99;
int score2 = 88;
int scores[88] = {1, 3, 5, 7};
元素类型 数组名称[元素个数];
*/
/*
// 0, 1, 2, 3
int scores[88] = {1, 3, 5, 7};
int scores2[88] = {2, 3, 5, 7};
int scores3[88] = {1, 9, 5, 7};
*/
/*
二维数组: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组
元素类型 数组名称[一维数组的个数][每个一维数组的元素个数];
元素类型 数组名称[行数][列数]; 元素类型: 说明二维数组中每个一维数组存储什么类型的数据
一维数组的个数: 说明二维数组有多少个元素
每个一维数组的元素个数 : 说明二维数组中每一个一维数组的元素个数
*/
int scoress[][] =
{
{, , , , }, // 0 // 每一个一维数组都是二维数组的一个元素
{, , , , },//
{, , , , } //
}; char names[][] =
{
// 0 1 2
{'l', 'n', 'j'}, //
{'x', 'm', 'g'} //
};
// 如何获取二维数组中的一维数组的元素的值
printf("%c\n", names[][]); // 如何遍历二维数组
// 思路: 1.取出二维数组的每一个元素(取出二维数组中的一维数组)
// 2.遍历一维数组 for (int i = ; i < ; i++) { // 0 , 1
// 1.取出一维数组
// names[i];
for (int j = ; j < ; j++) { // 0 , 1 , 2
printf("name[%i][%i] = %c\n", i, j, names[i][j]);
}
}
return ;
}
//
// main.c
// 二维数组注意点
//
// Created by xiaomage on 15/6/12.
// Copyright (c) 2015年 xiaomage. All rights reserved.
// #include <stdio.h> int main(int argc, const char * argv[]) {
// 1.二维数组的多种初始化方式
// 1.定义的同时初始化
int names[][] =
{
{'l', 'n', 'j'},
{'x', 'm', 'g'}
};
// 2.先定义再初始化
int names2[][];
names2[][] = 'l';
names2[][] = 'n';
names2[][] = 'j'; names2[][] = 'x';
names2[][] = 'm';
names2[][] = 'g'; // 3.完全初始化
int names3[][] =
{
{'l', 'n', 'j'},
{'x', 'm', 'g'}
}; // 4.不完全初始化
int names4[][] =
{
{'l', 'n'},
}; // 5.省略元素个数的两种写法
// 明确的告诉二维数组, 我们有2个一维数组
char names5[][] =
{
'l', 'n', 'j',
'x', 'm', 'g'
};
char names15[][] =
{
'l', 'n', 'j',
'x', 'm'
}; // 没有告诉二维数组我们有几个一维数组
// 如果在"定义的同时"进行初始化, 那么一位数组的个数可以省略 \
系统会自动根据每一个一维数组能够存放多少个元素, 自动根据初始化的值推断出二维数组中一共有多少个元素(多少个一维数组)
char names6[][] =
{
'l', 'n', 'j',
'x', 'm', 'g',
'n', 'b'
}; // 6.错误写法
// 注意点: 每个一维数组的元素个数不能省略
/*
int names7[2][] =
{
{'l', 'n', 'j'},
{'x', 'm', 'g'}
};
*/
/*
// 搞不清楚应该分配多大的存储空间, 以及搞不清楚应该把哪些数据赋值给第一个数组, 以及哪些数据赋值给第二个数组
int names7[2][] =
{
'l', 'n', 'j',
'x', 'm', 'g'
};
*/ return ;
}
//
// main.c
// 二维数组和函数
//
// Created by xiaomage on 15/6/12.
// Copyright (c) 2015年 xiaomage. All rights reserved.
// #include <stdio.h>
void change(int nums[]);
void change2(char names[][]);
void change3(char values[]);
void change4(char value); int main(int argc, const char * argv[]) { int nums[] = {, };
// 数组的名称就是数组的地址,保存的是数组第0个元素的地址,
// &nums == nums == &nums[0]
change(nums);
printf("nums[0] = %i\n", nums[]); char names[][] =
{
{'l', 'n', 'j'},
{'x', 'm', 'g'}
};
// &names == names == &names[0] == &names[0][0] , names就是数组的地址 , 都是一样的。
printf("&names = %p\n", &names);
printf("names = %p\n", names);
printf("&names[0] = %p\n", &names[]);
printf("&names[0][0] = %p\n", &names[][]); // 二维数组名称作为函数参数传递, 是传递的地址
change2(names);
//names[0] == 一维数组
change3(names[]); // names[0][0] == 一维数组的一个元素 == 值
change4(names[][]); printf("names[0][0] = %c\n", names[][]);
return ;
} // 基本数据类型
void change4(char value)
{
value = 'E';
printf("我执行了\n");
} // 以后只要看到函数的参数是一个数组, 那么就是地址传递
// 在函数中修改形参的值会影响到参数
void change3(char values[])
{
values[] = 'Q';
printf("我执行了\n");
} void change2(char values[][])
{
values[][] = 'w';
printf("我执行了\n");
} // 数组作为函数的参数传递, 修改形参的值会影响到实参
void change(int nums[])
{
nums[] = ;
printf("我执行了\n");
}
c15--二位数组的更多相关文章
- C++ 出现bug :二位数组的操作运算,求非对角线的元素的和
编写一个通用程序,求出二位数组(行数和列数必须相等)的非对角线的元素之和,试建立类MATRIX完成上述功能 #include<iostream> using namespace std; ...
- PHP 之二位数组根据某个字段排序封装
/** * @param $array * @param $keys * @param string $sort * @return array */ function arraySort($arra ...
- java中Arrays.sort()对二位数组进行排序
int [][]a = new int [5][2]; //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升 ...
- php二位数组合并
转自:http://www.cnblogs.com/losesea/archive/2013/06/14/3134900.html 题目:有以下2个二维数组 1$a=Array(0 => Arr ...
- 【shell】构造并遍历二位数组的一种用法
参考shell数组的部分操作用法,实现了构造和遍历二维数组的一种方式,具体如下: #数组元素以空格分割 sites=("www.a.com www.b.com www.c.com www.d ...
- shell二位数组——终端字符下降动画
猜想:Shell支持关联数组,可以利用关联数组模拟二维数组. [验证猜想] #!/bin/bash array[1,1]=1 array[2,1]=2 array[3,1]=3 for i in `s ...
- vector创建二位数组
默认初始化vector vector<vevtor<int> > arr(row, vector<int>(col, 0)); //指定行大小为row,列为col, ...
- Rotate Image(二位数组顺时针旋转)
问题描述: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockw ...
- php 按照二位数组中某个指定的字段进行排序
/** * 按照二维数组中某个指定的某个字段进行排序 * @param $array 需要被排序的数组 * @param $flag 排序的标志 1,SORT_DESC 降序 2,SORT_ASC 升 ...
- 剑指offer:二位数组中的查找
准备找实习期间,复习一下数据相关内容,刷刷题. 题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样 ...
随机推荐
- android黑科技系列——Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)
一.前言 在之前一篇文章已经介绍了一款网络访问软件的破解教程,当时采用的突破口是应用程序本身的一个漏洞,就是没有关闭日志信息,我们通过抓取日志获取到关键信息来找到突破口进行破解的.那篇文章也说到了,如 ...
- JAVA;使用java.awt.Image的不稳定性
在使用awt的image时候,不是能时时获取到图像的宽和高, GetWidth()函数偶尔得到的值为-1,暂时没有找到解决方法. 代码: public class picture extends JF ...
- react基础篇一
jsx简介 const element = <h1>Hello, world!</h1>; 这种看起来可能有些奇怪的标签语法既不是字符串也不是 HTML. 它被称为 JSX, ...
- NW.js构建PC收银端安装程序的指南
1.首先下载nw.js的SDK: https://nwjs.org.cn/download.html 2.SDK目录下新建myapp文件夹: 3.myapp文件夹内新建package.json文件: ...
- 【笔记】Linux就该这么学-第六课第四章
vim使用 a 在光标后一位置插入 i 在光标当前位置插入 o 在光标下面创建个空行 dd 删除(剪切)光标所在行 5dd 删除(剪切)从光标处开始的5行 yy 复 ...
- Uoj #274. 【清华集训2016】温暖会指引我们前行 LCT维护边权_动态最小生成树
Code: 行#include<bits/stdc++.h> #define ll long long #define maxn 1000000 #define inf 100000000 ...
- Python 集合 day3
集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,集合用{},里面是一个一个元素,不同于key-value形式的字典: 注意:创建一个空集合必须用 s ...
- Day7 字符串和常用数据结构
字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台 ...
- appium滑动
在app应用日常使用过程中,会经常用到在屏幕滑动操作.如刷朋友圈上下滑操作.浏览图片左右滑动操作等.在自动化脚本该如何实现这些操作呢? 在Appium中模拟用户滑动操作需要使用swipe方法,该方法定 ...
- Mark Zuckberg: A letter to our daughter
转自: http://www.fastcompany.com/3054120/fast-feed/read-mark-zuckerbergs-letter-to-his-newborn-daugh ...