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, 3int scores[88] = {1, 3, 5, 7};int scores2[88] = {2, 3, 5, 7};int scores3[88] = {1, 9, 5, 7};*//*二維數組: 數組中的每一個元素又是一個數組, 那么這個數組就稱之為二維數組元素類型 數組名稱[一維數組的個數][每個一維數組的元素個數];元素類型 數組名稱[行數][列數];元素類型: 說明二維數組中每個一維數組存儲什么類型的數據一維數組的個數: 說明二維數組有多少個元素每個一維數組的元素個數 : 說明二維數組中每一個一維數組的元素個數*/int scoress[3][5] ={{1, 3, 5, 7, 9}, // 0 // 每一個一維數組都是二維數組的一個元素{2, 4, 6, 8, 10},// 1{1, 2, 3, 4 , 5} // 2
};char names[2][3] ={
// 0 1 2{'l', 'n', 'j'}, // 0{'x', 'm', 'g'} // 1
};// 如何獲取二維數組中的一維數組的元素的值printf("%c\n", names[0][0]);// 如何遍歷二維數組// 思路: 1.取出二維數組的每一個元素(取出二維數組中的一維數組)// 2.遍歷一維數組for (int i = 0; i < 2; i++) { // 0 , 1// 1.取出一維數組
// names[i];for (int j = 0; j < 3; j++) { // 0 , 1 , 2printf("name[%i][%i] = %c\n", i, j, names[i][j]);}}return 0;
} //
// 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[2][3] ={{'l', 'n', 'j'},{'x', 'm', 'g'}};// 2.先定義再初始化int names2[2][3];names2[0][0] = 'l';names2[0][1] = 'n';names2[0][2] = 'j';names2[1][0] = 'x';names2[1][1] = 'm';names2[1][2] = 'g';// 3.完全初始化int names3[2][3] ={{'l', 'n', 'j'},{'x', 'm', 'g'}};// 4.不完全初始化int names4[2][3] ={{'l', 'n'},};// 5.省略元素個數的兩種寫法// 明確的告訴二維數組, 我們有2個一維數組char names5[2][3] ={'l', 'n', 'j','x', 'm', 'g'};char names15[2][3] ={'l', 'n', 'j','x', 'm'};// 沒有告訴二維數組我們有幾個一維數組// 如果在"定義的同時"進行初始化, 那么一位數組的個數可以省略 \
系統會自動根據每一個一維數組能夠存放多少個元素, 自動根據初始化的值推斷出二維數組中一共有多少個元素(多少個一維數組)char names6[][3] ={'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 0;
} //
// 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[2][3]);
void change3(char values[]);
void change4(char value);int main(int argc, const char * argv[]) {int nums[2] = {1, 2};// 數組的名稱就是數組的地址,保存的是數組第0個元素的地址,// &nums == nums == &nums[0]
change(nums);printf("nums[0] = %i\n", nums[0]);char names[2][3] ={{'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[0]);printf("&names[0][0] = %p\n", &names[0][0]);// 二維數組名稱作為函數參數傳遞, 是傳遞的地址
change2(names);//names[0] == 一維數組change3(names[0]);// names[0][0] == 一維數組的一個元素 == 值change4(names[0][0]);printf("names[0][0] = %c\n", names[0][0]);return 0;
}// 基本數據類型
void change4(char value)
{value = 'E';printf("我執行了\n");
}// 以后只要看到函數的參數是一個數組, 那么就是地址傳遞
// 在函數中修改形參的值會影響到參數
void change3(char values[])
{values[0] = 'Q';printf("我執行了\n");
}void change2(char values[2][3])
{values[0][1] = 'w';printf("我執行了\n");
}// 數組作為函數的參數傳遞, 修改形參的值會影響到實參
void change(int nums[])
{nums[0] = 998;printf("我執行了\n");
}
?
轉載于:https://www.cnblogs.com/yaowen/p/7384536.html
總結
- 上一篇: django分页功能
- 下一篇: 仿真反射详解(三)