您的位置:首页 > 编程语言 > C语言/C++

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]
输出结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: