c语言数组 您所在的位置:网站首页 定义一个空的字符数组怎么表示出来 c语言数组

c语言数组

2024-06-02 08:04| 来源: 网络整理| 查看: 265

数组 1.数组的基本用法 1.1概念

数组是有序的元素序列。 将若干个类型相同的变量的集合命名,那么这个名称就是数组名。 重点是:数据类型相同并且连续的变量的集合。

1.2 定义格式

存储类型 数据类型 数组名[元素个数]; 例如:(auto) int a[5]; 数组名:代表数组的首地址,a是地址常量,不能为左值,不能被赋值。

数组定义方法: (1)数组名定义规则跟变量名相同,遵循标识符命名规则。 (2)数组名后使用方括号括起来的表达式常量,表示元素的个数。 (3)常量表达式中可以包含常量和符号常量,不能包含变量。

1.3 访问元素

数组名[下标]; 注意:下标从0开始 例如: 访问第一个元素: a[0]; 访问第n个元素: a[n-1];

特点: 数据类型相同 在内存中连续

注意: (1)数组的数据类型就是其元素的数据类型 (2)数组名要符合标识符命名规则 (3)在同一个函数中,数组名不要与变量名相同。 例如:int a[5]; int a;//错误 (4)数组下标从0开始,到n-1结束。

2.一维数组

一维数组、二维数组

2.1 一维数组的概念

是有一个下标的数组 格式:存储类型 数据类型 数组名[元素个数]; 访问元素: 数组名[下标]; 下标从0开始 数组名:数组的首地址

2.2 初始化

【1】定义时全部初始化 int a[5]={1,2,3,4,5}; printf(“%d\n”,a[0]); printf(“%d\n”,a[1]); printf(“%d\n”,a[2]); printf(“%d\n”,a[3]); printf(“%d\n”,a[4]);

【2】定义时部分初始化: 未初始化元素值为0 int a[5]={1,2}; printf(“%d\n”,a[0]); printf(“%d\n”,a[1]); printf(“%d\n”,a[2]); printf(“%d\n”,a[3]); printf(“%d\n”,a[4]);

【3】先定义,后初始化。需要单独对每个元素赋值。 int a[5]; a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5; printf(“%d\n”,a[0]); printf(“%d\n”,a[1]); printf(“%d\n”,a[2]); printf(“%d\n”,a[3]); printf(“%d\n”,a[4]);

注意定义时不能数组越界: int a[3]={6,2,3,5,1}; //错误,数组越界

2.3 定义空数组

【1】 int a[5]={0,0,0,0,0}; 【2】int a[5]={0}; 【3】int a[5]={};

2.4 数组引用

(1)先定义后引用 (2)每次只能引用一个数组元素a[i], 如果想引用所有元素可以通过循环遍历数组。 (3)引用时防止数组越界 (4)打印数组元素地址用%p的格式 例如: int a[10]; printf(“%p”,a); printf(“%d”,a); //错误,数组名是数组的首地址。

如果想遍历数组可以通过循环:

#include int main(int argc, char const *argv[]) { int a[5]={1,2,3,4,5}; for(int i=0;i}; for(int i=0;i1, 1}; for (int i = 2; i int a[10] = {1, 2, 3}; for (int i = 0; i 1, 2, 3}; for (int i = 0; i }; int sum = 0; gets(s); for (int i = 0; i char s[32] = {}; int sum = 0; gets(s); int i=0; while (s[i]!='\0') { if(s[i] == ' ') sum++; i++; } printf("%d\n", sum); return 0; } 3.2.2 输出

(1)用printf():

char s[32]=“hello”; printf(“%s”,s);

(2)for循环

for(int i=0;i char s[32]={}; int len=0; scanf("%[^\n]",s); len=strlen(s); for(int i=0;i{1,2,3},{4,5,6}}//按行赋值 【2】部分初始化 未初始化的元素值为0 int a[2][3]={1,2,3,4,}; //顺序赋值 1 2 3 4 0 0 int b[2][3]={{1,2},{4,5}//按行赋值 1 2 0 4 5 0 【3】未初始化 随机值,需要单独赋值。

4.6 遍历二维数组

for循环嵌套,外层行数,内层列数。

int a[n][m]={}; for(int i=0;i //scanf()/printf() } }

练习:设一个二维数组,每个数等于行和列数的乘积。

#include int a[3][3]={0}; int main(int argc, char const *argv[]) { for(int i=0;i a[i][j]=i*j; printf("%d ",a[i][j]); } printf("\n"); } return 0; }

输出结果:

a[0][0]=0; a[0][1]=0;a[0][2]=0 a[1][0]=0; a[1][1]=1;a[1][2]=2 a[2][0]=0; a[2][1]=2;a[]2[2]=4

4.7 内存分配

int a[2][3];

(1)行地址 1.在二维数组中,数组名a的值,表示的实际含义是第一行首地址。这个数值还等于整个数组的首地址,还等于第一个元素的地址(&a[0][0])。 2.a+1代表第二的首地址。这个数值还等于第二行第一个元素的地址(&a[1][0])。

(2)列地址 1.二维数组中,a[0]的值是第一行第一列的地址,也就是该数组中首个元素的地址(&a[0][0]) 2.a[0]+1的值,是数组元素第一行第二列的地址(&a[0][1])

int a[2][3]={1,2,3,4,5,6}; printf(“%p %p\n”,a,a+1); printf(“%p %p\n”,a[0],a[1]); printf(“%p %p\n”,&a[0][0],&a[1][0]); printf(“%p %p\n”,a[0]+1,a[1]+1); printf(“%p %p\n”,&a[0][1],&a[1][1]);

打印结果: 0xbf858184 0xbf858190 0xbf858184 0xbf858190 0xbf858184 0xbf858190 0xbf858188 0xbf858194 0xbf858188 0xbf858194



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有