C语言之数组

1.一维数组

特点:同一数组中的所有元素都属于同种数据类型,数组元素用数组名和相应的下标来确定。
方法:一个数组元素其实就是一个变量,可以称为带下标的变量

1.一维数组的定义和引用(只有一个下标)

1.定义格式:
类型名 数组名【常量表达式】;
如:float s【25】;float s【5*5】;int a【10】;char s1【30】;
注意:1.数组名属于用户定义标识符。要遵守标识符命名规则:错误例子:int for【10】
2.定义一维数组时数组名后必须用一个【】将变量表达式括起来,常量表达式的值表示所定义数组共有多少个元素(数组长度或数组的大小)。
如:下面定义为非法 int a(10);int a{10}
3.定义数组时方括号中的表达式不能含有变量。另外表达式的值必须要大于零且为正整数
4.c中每个数组在内存中分配空间是连续分配的

2.一维数组元素的引用格式:

数组名【下标】

3.一维数组的初始化

格式:类型名 数组名【常量表达式】={初值1,....};
注意: 1.多则出错,少则补零
2.定义赋初值的个数等于数组长度,则数组长度可以省略
int a【】={1,2,3,4}
3.一个初值也不给则是随机值:int a【5】;
4.只能在定义数组的同时用{}给数组赋初值

2.二维数组

1.二维数组的定义和引用(有两个下标)

1.定义格式:
类型名 数组名【常量表达式1】【常量表达式2】;
如:float s【25】【2】;float s【55】【34】;int a【10】【10】;char s1【30】【2】;
注意:1.两个【】分别表示行列数
2.在内存中二维数组元素的存放也是连续的,先行后列原则
2.引用:数组名【行】【列】
注意:不能整体引用,只能引用其中的元素
引用时必须有两个下标
3.初始化
将初始值依序放在{}中,与一维数组初始化格式相同
例:int a【2】【3】={1,2,3,4,5,6};
方法二:定义二维数组同时按行初始化,每一行初值均用{}括起,采用嵌套的{}格式,例如:int【2】【3】={{1,2,3},{4,5,6}};
注意:定义二维数组的同时给数组初始化,则可以省略行数,但列数不能省略

3.字符数组

c语言中没有字符串变量,那么如何存储?
方法一:字符数组存放
方法二:字符型指针变量

1.字符数组的初始化

char a【】={'a','b','c','d','e'};

2.字符串

因为字符串最后都有一个字符串结束符'\0',所以用字符数组存放字符串时一定要有一个元素存放结束符'\0'
(1)字符串常量后有一个’\0'。如:“abcd”由5个字符组成
“”等价于”\0”,是一个空字符串。
(2)用字符串给一字符数组进行初始化有三种情况:

方法1:char a[]="abcd";
同 char a[]={'a','b','c','d'};?
方法2:char a[]={"abcd"};
方法3:char a[]={'a','b','c2','d';10};

注意:c语言编译过程中遇到双引号才会加\0,遇到单引号不会
char a【】={'a','b','c','d'};=======》不等同于char a【】="abcd";
前者{}不能省略,且数组长度为4,后者长度为5因为有字符串结束字符\0
char a【】={'a','b','c','d','\0'}等同于char a【】="abcd";

数组的使用

如何使用一维数组

如何使用二维数组

如何使用字符串

1.字符串存储(赋值)四种方法

1.scanf();键盘输入

char a【10】;scanf(“%s”,a);//数组名本身就是地址
scanf(“%s”,a);非法
注意:用%s格式输入时,遇到空格符或回车符则自动结束输入
scanf(“%s,%s”,a,b);不能正确读取数据,中间不能加任何字符

printf();输出
如:

char s[10];
scanf("%s",s);//输入: ab cd<回车>
printf("%s",s);//注意输出时则从当前地址开始直到遇到结束字符为止
输出:ab

2.gets()键盘输入
(1)字符串存储(赋值)四种方法
|方法2:gets()键盘输入

格式:#include<stdio.h>
gets(字符数组)

功能:读取一个字符串赋给字符数组注:
(1)用该函数输入字符时,只有遇到回车符系统才结束读取字符
如:char strl[10];gets(strl);.
输入:ab cd<回车>
strl:ab cd
(2)不论是用%s还是gets()在输入时均不需要输入双引号,用了双引号则双引号也作为字符串的有效字符。
方法2:puts()输出

格式:#include<stdio.h>
puts(字符数组或字符串常量)

功能:在屏幕上输出字符数组中的字符。
注:用该函数输出与用%s格式输出一样,只是‘0’转成’n’输出。

puts(“abc”);puts(“defg”);
输出结果:
abc 
defg 
printf(“abc”);printf(“defe”);

方法3:字符串初始化
char s[]=“abcd”;
char s[]={“abcd};
char s[]={"a',b','c2,'d',10'};

2.字符串函数(处理)4个函数

第1个函数:strcat()

格式:#include<string.h>
strcat(字符数组1,字符数组2)
功能:“连接”
如:
char a[18]="jack”;
char b[10]="zhy";
strcat(a,b);
a=>"jackzhy”
b=>"zhy”

注意:从第一个串的'\0'开始连入
第二个串'\0'也连入
返回字符数组的首地址


strcpy(字符数组1,字符数组2)

注意:从第一个字符开始替换


strcmp(字符数组1,字符数组2)
的比较
image.png

注意:图片上例题一strlen(a)=7
例题二strlen(a)=5=====》首先读入abc,遇到\转义字符最多结合三位(八进制)但不能出现8所以第四个字符是\01继续读入8,所以长度为5
如果是:char a【】=“abc\08\0”;那么它的长度是3,因为读入结束符则停止

后期整理指针的时候会深入解释这些函数哦~~~

3.例题分析
image.png

输出结果为:
12345
EFG

例2:


image.png

输出结果:
12345
12345

例3


上述代码错误

上述代码错误!
原因:pa是一维数组的名字 ,是所有元素连续占用存储空间的首地址,这个地址一旦给出,永远不能改变,是一个地址常量,因此常量不能放在赋值号(=)左边
例4


image.png

输出结果为:
ABCDEFGXYZ
ABCDEFGXYZ

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 3,894评论 2 13
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,423评论 3 44
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,323评论 0 2
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 6,318评论 1 42
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,044评论 0 7