C语言中的字符串与数组

字符与字符串

在C语言中,字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符在计算机内存放,应规定相应的代表字符的二进制代码。代码的选用要与有关外围设备的规格取得一致。但我们今天讲的没有那么深入,只针对小白说一些最最基础的东西。相信看了上面一堆定义,你还是没明白什么是字符,其实通俗来讲,‘ ’ 引用的就是字符(单个),而" "引用的就是字符串(一串字符)。

字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。对于字符串,我们也不讲过于深入。

数组

一、数组是一组相同元素的集合。如:int arr[10] , char arr [ ]={ 'a','b','c'}......

数组有一维的,也有二维、三维的.......我们先从简单的一维数组说起。

二、首先看数组的初始化,比如我们要初始化一个整型类型的数组,int arr[3]={1,2,3}

后面的{ } 里有几个元素,那么前面 [ ] 中就相应的表示数字...

如果 [ ] 中没有放数字,但能确定后面{ } 内有几个元素,编译器就可以自行判断有几个元素。

三、还有一种初始化叫不完全初始化。例如:char arr[4]={'a','b'} [ ]里标明有4个元素,但是 { }里只显示2个,其余默认为0 。

四、数组是以下标访问的,比如int arr[5]={1,2,3,4,5}  第一个元素下标为0,第二个下标为1......

千万记住下标不是从1开始的,老是会有人搞错。

五、还有一点要注意,就是数组的下标不能为变量,如:int n=4;  int arr [n]=“abc”;

这里的n是变量,即使初始化为4,也决不能用它来当下标。(C99下可以,变长数组)

六、一维数组在内存中是连续存放的,并且是由低到高存放的。来看下面的代码:

先解释一下,一维数组的数组名就是其首元素的地址。然后来看

数组int arr [5]={1,2,3,4,5} 的首元素地址arr[1]末尾两位是A8(这里地址是十六进制的),第二个元素的地址arr[2]末尾两位是AC,相较于首元素,增加了4位,而再看第三、第四、第五,都相较于前一个增加了4位,也就是说,它们的地址在内存中是连续存放的,而且由低到高。

要注意,上面说一维数组的数组名就是其首元素的地址,这里有两个特例:

1.sizeof(arr)当计算arr数组大小时,这里的arr就不是首元素了,而是取的整个元素的地址。

2.&arr,我们来看一段代码:

 可以看到,当打印arr和&arr时,它们的地址是一样的。但是其实这里&arr取的就是整个元素的地址了,如果这时候给它们做运算,arr+1的结果和&arr+1就不同了。arr+1相对于arr是增加了4位,而&arr+1相对于&arr增加了20位(也就是整个数组的大小)。

 再回头看一下字符串。

字符串末尾都是隐含了一个\0的,例如:char arr [4]="abc"  在abc的后面其实还有个隐藏的\0,它也占一个字符。所以"abc"看似是3个字符,其实是4个字符,就是因为还有个\0在后面。同时\0也作为字符串结束的标志,但在计算字符串长度时不将其算在里面。

下面我们来看一段代码来帮助我们更好的掌握:

我们来看打印的结果,很明显,arr1很好的打印出了abc,而arr2,3,4都出现了非法字符,这是为什么呢?就是因为\0 的存在。arr1中,编译器在数完了abc后,在第4个字符位置数到了\0,结束,所以正常打印abc,而arr2,3中,在数完了第四个字符d后,没有\0,就出现了错误,同样的,arr4因为没有固定下标值,所以编译器不知道\0在哪,不知道在哪结束,于是就出现了错误。

好了,各位小伙伴们,今天的分享就到这了,谢谢大家!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值