C语言 数组和字符串篇
2015-07-16 23:38
351 查看
Four Day一、数组数组:是按一定顺序排列具有某种相同性质的同类变量的集合1、一维数组数据类型数组名[整数常量表达式]说明:数据类型是全体数组元素的数据类型数组名用标识符表示,整型常量表达式代表数组具有的数组元素个数数组元素的下标一律从0开始编译程序为数组开辟连续的存储单元,用来顺序存放数组的各数组元素用数组名表示该数组存储区的首地址2、一维数组初始化int a[4] = {1, 2, 3, 4}执行:a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4;只给部分数组元素初始化static int[4] = {1, 2};初始化时,定义数组元素的个数的常量表达式可以省略int a[] = {1, 2, 3};3、二维数组数据类型 数组名[整型常量表达式][整型常量表达式]
int a[2][3]; 表示:数组类型为二维数组 有2行3列,共2*3=6个元素 行下标为0、1,列下标为0、1、2 4、二维数组初始化 int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; 执行:a[0][0] = 1; a[0][1] = 2; a[0][2] = 3; a[1][0] = 4; a[1][1] = 5; a[1][2] = 6;部分数组初始化 static int a[2][3] = {{1, 2},{4}};可省略第一维,不可省略第二维,数据个数和第二维长度可确定第一维长度 例:int a[][3] = {1, 2, 3, 4, 5, 6}; 第一维数组长度:6/3=2 //用第二维长度/数据个数若第二维长度除以数据个数不能整除,则所得商+1 例:int a[][3] = {1, 2, 3, 4}; 第一维数组长度:4/3的商为1, 1+1=2分行初始化 static int a[][3] = {{1, 2},{4}}; [code]一、数组练习
1、输出数组中的元素
#include<stdio.h> int main(void) { int a[] = {1, 5, 6}; int i; for (i = 0; i < 3; i++) { printf("%d\n", a[i]); } }
输出结果:1 5 6
2、数组的理解
#include<stdio.h>int main(void) {int a[2];//在a处开辟两个4个字节大小的内存空间a[0] = 1;//在a处偏移0个位置赋值为1a[1] = 2;//在a处偏移1个位置赋值为2printf("%d\n", a);//a处存的东西printf("%d\n", &a[0]);//【a存的地址】处【再偏移0】处的【地址】printf("%d\n", a[0]);//【a处的地址】处【再偏移0】处的【值】printf("%d\n", &a[1]);//【a存的地址】处【再偏移1】处的【地址】}[/code]
输出结果:2686784 2686784 1 2686788
3、遍历二维数组
#include<stdio.h>int main(void) {int a[2][3] = {{100, 99, 60}, {99, 60, 99}};int i, j;for (i = 0; i < 2; i++) {for (j = 0; j < 3; j++) {if (i == 0) {printf("班长的成绩%d\n", a[i][j]);}if (i == 1) {printf("纪检委员的成绩%d\n", a[i][j]);}}}}[/code]
输出结果:[/code]
4、字符串数组
#include<stdio.h>#include<string.h>int main(void) {char b[] = "china";int a[] = {1, 2, 3};char c = 65;//%d c可输出为数字//%c c也可输出为字符printf("%s\n", b);// 如果按%s字符串格式输出,则为字符串printf("%d\n", b);//如果首地址按%d整形输出,则为地址printf("%d\n", a);//数组再存数组,便是二位数组int grade[2][2] = {{99, 100}, {88, 66}};//数组存数组再存一个数组,便是三维数组(字符串是数组)char users[2][2][8] = {{"xiaosan", "123"},{"xiaosi", "123"}};char p[] = "123";char pp[] = "123";char ppp[] = "1234";printf("%d\n", p == pp);//p和pp是首地址,两个数组的首地址不一样printf("%d\n", strcmp(p, pp) == 0);//strcmp是比较的两个字符串(经过处理的,不再是地址类似于%s)printf("%d\n", strcmp(p, ppp) == 0);}[/code]
输出结果:
相关文章推荐
- 最大连续子序列
- C++的函数重载
- C++学习笔记——引用
- C++之纯虚函数
- C语言中结构体的声明方式
- c++中new分配动态数组
- C/C++程序设计04(指针和引用、递归)
- c++ string类相关操作详解
- C++实训——银行储蓄系统开发
- C++学习总结(一)
- C语言中的数组和字符串
- [C++ primer]C++四种强制类型转换
- C++慎用define,以及相关的替代的方法
- C语言中如何将二维数组作为函数的参数传递
- C语言编程基础7.8
- c++ vector push_back 出错或者错误
- chapter18test4
- C语言学习(第一天)
- C++宏中的“#”与“##”用法
- chapter18test3