关于数组_1
来源:互联网 发布:java实现登陆注册 编辑:程序博客网 时间:2024/06/05 09:43
数组是有序数据的集合,一维数组的格式为:
类型标识符 数组名[常量表达式];
例如:
int a[5];
它共有5个元素,这些元素的名字依次是:
a[0]、a[1]、a[2]、a[3]、a[4]
为什么需要数组?
为了解决大量同类型数据的存储和使用问题
为了模拟现实世界
例1:
# include <stdio.h>int main(void){int a[5] = {1, 2, 3, 4, 5};int i;for (i=0; i<5; ++i)printf("%d\n", a[i]);return 0;}输出结果为:
一维数组
为n个变量连续分配存储空间
所有变量的数据类型必须相同
所有变量所占的字符大小必须相等
有关一维数组的操作:
初始化
完全初始化
int a[5] = {1, 2, 3, 4, 5};
不完全不初始化(未被初始化的元素自动为零)
int a[5] = {1, 2, 3};
不初始化(所有元素都是垃圾值)
int a[5];
清零
int a[5] = {0};
错误写法:
int a[5];
a[5] = {1, 2, 3, 4, 5};//错误 (只有在定义数组的同时才可以整体赋值,其他情况下整体赋值都是错误的)再说没有a[5]这个数,这里最多到a[4]
int a[5] = {1, 2, 3, 4, 5};
int b[5];
如果把a数组中的值2全部复制给b数组
错误写法:
b = a;
正确写法:
for (i=0; i<5; ++i)
b[i] = a[i];
例2:
# include <stdio.h>int main(void){int a[5];int i;scanf("%d", &a[0]);printf("a[0] = %d\n", a[0]);scanf("%d", &a[3]);printf("a[3] = %d\n",a[3]);for (i=0; i<5; ++i)printf("%d ", a[i]);return 0;}
当前后输入的两个数字是1、2时,
输出结果为:一维数组名不代表数组中所有的元素
而是代表第一个元素的地址
下边是把一个数组元素倒过来的例子
例3:
# include <stdio.h>int main(void){int a[7] = {1, 2, 3, 4, 5, 6, 7};int i, j;int t;i = 0;j = 6;while (i < j){t = a[i];a[i] = a[j];a[j] = t;i++;j--;}for (i=0; i<7; i++)printf("%d ", a[i]);return 0;}输出结果为:
二维数组的格式为:
类型标识符 数组名[常量表达式][常量表达式]
例如:
int a[3][4];
它共有12个元素,可以当作3行4列看待,这些元素的名字依次是
a[0][0]、a[0][1]、a[0][2]、a[0][3]
a[1][0]、a[1][1]、a[1][2]、a[1][3]
a[2][0]、a[2][1]、a[2][2]、a[2][3]
a[i][j]表示第 i+1 行、第 j+1 列的元素
int a[m][n]; 该二维数组右下角位置的元素只能是a[m-1][n-1]
初始化:
int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
或
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
例4:
# include <stdio.h>int main(void){int a[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};int i, j;//输出数组内容for (i=0; i<3; ++i){for(j=0; j<4; ++j)printf("%-3d ", a[i][j]);//负号表示左对齐,3表示一个元素占3个字节printf("\n");}return 0;}输出结果为:
多维数组
是否存在多维数组?
不存在
因为内存是线性一维的
n维数组可以当作每个元素是n-1维数组的一维数组
比如:
int a[3][4];
该数组是含有3个元素的一维数组
只不过每个元素都可以再分为4个小元素
int a[3][4][5];
该数组是含有3个元素的一维数组
只不过每个元素都是4行5列的二维数组
一维字符数组:
用来存放字符数据的数组是字符数组(字符数组中的一个元素存放一个字符)
例如:
char c[5];
初始化
c = {‘C’, ‘h’, ‘i’, ‘n’, ‘a’};//错误
c[0] = ‘C’; c[1] = ‘h’; c[2] = ‘i’; c[3] = ‘n’; c[4] = ‘a’;//正确
例5:
# include <stdio.h>int main(void){int i, j;char a[ ][5] = {{'C', 'h', 'i', 'n', 'a'}, {'B', 'A', 'S', 'I', 'C'}};for (i=0; i<=1; i++){for (j=0; j<=4; j++)printf("%c ",a[i][j]);printf("\n");}return 0;}输出结果为:
“关于数组_2”会写在“C语言——数据结构里”
【所有代码均在windows系统下VC++6.0下运行通过】
(如有错误,敬请指正)
- 关于数组_1
- 面试:数组:Topk _1
- 关于随机数_1
- 关于getchar()函数_1
- 关于函数_1
- 关于指针_1
- 关于链表_1
- 2_1有序的结构体数组
- 分而治之_最大子数组_1
- 动态规划_最大子数组|||_1
- 动态规划_最大子数组||_1
- 关于Vue2.0那些事_1
- Perl Learning (3_1) —— 列表与数组
- 16_1小心地放开玩字符串/字符数组
- java入门第一季_1.6_数组
- 关于C语言中文件的简单写入_1
- iOS关于适配屏幕的问题_1
- Java学习记录日志_1.1关于CLASSPATH环境变量
- tarコマンドで解凍・圧縮するlinux一覧まとめ(gz、zipなど)
- 解决Sqlite Developer过期
- Common Intents
- java基础加强--JavaBean和内省Introspector
- VB.NET 2008窗体应用技巧
- 关于数组_1
- Machine Learning Foundation Lecture 04 Feasuibility of learning 学习笔记
- 计算机监控系统仿真开发平台的软件实现(上)
- Confluence 为图片,视频,音频和文档文件使用自动完成
- VB.NET实现关机和重新启动
- seo的核心和seo的境界杂谈
- 快照、索引库不一样浅谈以及其他
- 影响搜索引擎排名的两个因素分析
- convert sorted list to binary search tree