【学习笔记】 关键字:字符串,strlen

代码如下:

---------------------------------

#include<stdio.h>

#include <string.h>

#include <stdlib.h>

int main()

{

char a[1000];

int i = 0;

for (i = 0; i < 1000; i++)

{

a[i] = -1 - i;

printf( "a%d =%d\n",i,a[i]);

}

printf( "strlen(a) = %d", strlen(a));

printf( "\n");

printf( "size = %d\n", sizeof (a) / sizeof(a[0]));

return 0;

}

------------------------------------------

程序执行的结果:

a0 = -1  a1 = -2··········· 一直到a127 = -128  然后a128 = 127  a129 = 126  一直到a255 = 0,

然后a156 = -1开始,重复之前的循环。

而strlen(a) =255

size = 1000。

为什么会这样呢?下面是解释:

1、首先,定义的a是一个字符串数组,范围是-128~127  这段范围的长度是255.

2、然后,再看,从a0 = -1开始,一直到a255 = 0 这段,

3、字符串存入的是数字,而这个数字在字符串数组的元素中,是作为ASCALL码的。

也就是说,每个存入 字符串数组元素 中的数字,都对应着一个字符

比如说:用%d的格式输出,就是存入的那个数字,而如果用%c输出,则打印出的就是那个字符了。

4、而’\0‘的ASCALL码值就是0,strlen函数在计算字符串的长度时,遇到‘\0’停止,统计它前面的字符个数

也就是说,当使用strlen函数 走到a255时,发现它对应的元素是‘\0’了,这时候,开始统计从a0到a254(不算a255)

之间的元素数目,统计出来是255,所以strlen(a)得到的就是255了

时间: 2024-10-16 21:50:10

【学习笔记】 关键字:字符串,strlen的相关文章

Swift学习笔记(4)--字符串及基本使用

String是例如"hello, world","海贼王" 这样的有序的Character(字符)类型的值的集合,通过String类型来表示. Swift 的String类型与 Foundation NSString类进行了无缝桥接.如果您利用 Cocoa 或 Cocoa Touch 中的 Foundation 框架进行工作.所有NSString API 都可以调用您创建的任意String类型的值.除此之外,还可以使用本章介绍的String特性.您也可以在任意要求传

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507

day5_python学习笔记_chapter6_字符串列表元组

1. 序列:seq[n], seq[x:y], seq * n序列重复n次,切片, 序列翻转 s="abcde", s[::-1]="edcba" 内建函数:1. 类型转换: list(iter), str(obj), unicode(obj), tuple(iter) , 2. len(seq), max(), min() , reversed(), sorted(), sum(), 2. 字符串: in ,not in ,,, import string , s

Java学习笔记_18_字符串、包装类、原始数据类剪得转换

18. 字符串.包装类.原始数据类剪得转换: 各个转换如下: 1>String 转换成Integer: Integer integer = new Integer("string");或 Integer Integer = Integer.valueOf(String): 注:String必须是数字字符串,如:"1232". 2>Integer 转换成String: String str = Integer.toString(); 3>Intege

Perl语言学习笔记 14 字符串与排序

1.字符串内用index搜索 $where = index($words,$word); ##从words里找到首次出现word的位置,下标从0开始,查找失败则返回-1: 指定开始搜索的地方:$where = index($words,$word,10); ##从10开始往后寻找,包含10 搜索子串最后出现的位置: 限定返回的最大位置:$where = rindex($words,$word,10); ##只搜索下标为10以前的字符. 2.处理子串 substr参数:依次为:字符串.起始下标.要

Python学习笔记--Python字符串连接方法总结

声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的字符串连接方式:str1 + str2 这个估计是Python中最常用的方式,直接用 “+” 来连接两个字符串: 'Jim' + 'Green' = 'JimGreen' 2)python 新字符串连接语法:str1, str2 第二种比较特殊,如果两个字符串用“逗号”隔开,那么这两个字符串将被连接

ES6学习笔记(二)——字符串扩展

相信很多人也和我一样,不喜欢这样循规蹈矩的逐条去学习语法,很枯燥乏味.主要是这样学完一遍之后,没过一段时间就忘到九霄云外了.不如实际用到的时候研究它记得牢靠,所以我就整理成笔记,加深记忆的同时便于复习查看. 在这样不断的学习过程中,也提高了自己的总结能力:) 1.字符串的遍历器接口 ES5,数组和对象可以进行遍历,使用for() 和 for...in,还有jq中的each()方法进行遍历. ES6为我们提供了字符串遍历器  for...of 循环遍历 优点:可以识别大于0xFFFF的码点,传统的

Python学习笔记(字符串)

一变量 1创建变量:d=4   表示将整型对象‘4’赋值给变量d 记住:一切数据都是对象 记住:一切变量都是数据对象的一个引用 分析:Python内部的引用计数.sys.getrefcount 2变量命名规范: (1)只能用字母和下划线 (2)不能用关键字如if等 (3)大小写敏感 3赋值: 记住多态特性 多重赋值 删除:del 一个等号=是赋值,两个等号==是比较 注意:三内置必须用熟.type,help,dir 4常用基本数据类型: (1)    int整型 (2)    boolean布尔

PHP学习笔记——6.字符串

1.定义方式 ①双引号方式 例:$str = "hello"; 注:在使用双引号进行字符串定义时,字符串内部不能再出现双引号 因为PHP会将其当成字符串边界进行解析 例:$str = " hello,"susan" "; =>hello, 此时,可对内部双引号进行转义,使用\"表示无语义的" 则:$str = " hello,\"susan\" "; 其它需要转义的符号: \&qu

Go学习笔记(3)字符串

Go 语言中的字符串以及常用的两个字符串处理包. 二. 字符串 Go语言中的字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节).UTF-8 是被广泛使用的编码格式,是文本文件的标准编码,其它包括 XML 和 JSON 在内,也都使用该编码.由于该编码对占用字节长度的不定性,Go 中的字符串也可能根据需要占用 1 至 4 个字节,这与其它语言如 C++.Java 或者 Python 不同.Go 这样做的好处是不仅减少了内存和硬