今天又遇见几个好题,和以前的一些凑一块写一篇文章,作为我延迟去自习室的一个借口吧。

首先是第一题

 int fun(char* s){
char* t = s;
while(*t++);
return t-s;
}
fun函数的功能是_______
比较两个字符串的大小
计算s所指字符串占用内存的大小
技术s所指字符串的长度
将s所指字符串复制到字符串t中

题目有四个选项,为什么我会选这个题呢,因为自己在面试C++的岗位中第一次遇见,印象里好像是写错了,然后在练习C语言计算机二级时候遇见不少变种,最后别人在群里问这个题目,还因为第二个和第三个选项给吵起来了……如此种种。

题目很经典,在于你有C语言的基本功后,可以成功的排除第一个和第四个选项,知道函数返回的是一个int值,而且还和这个字符串的长度有关。那么除去长度后第二个选项也不能排除,因为占用内存大小刚刚好比字符串的长度多一个字节,相当于是\0,那这个时候就需要分析运算符的优先级了。

*t++相当于*(t++)因为两个运算符优先级相同,而且是右结合的。然后就可以将其拆分为两个表达式:*t和t++

两个表达式要不就都运行,要不就都不运行。最后一次到\0时,while中的t还做了一次++操作,所以此时s指向字符串开头,t指向字符串\0的后一个位置,两者相减等于strlen(s)+1,也就是sizeof(s);

见运行代码和结果:

char a[]="lavender";

    printf("sizeof %s is %d\n",a,sizeof(a));
printf("length %s is %d\n",a,strlen(a));
printf("%s length is %d",a,fun(a)); 运行结果
sizeof lavender is
length lavender is
lavender length is
Process returned (0x0) execution time : 0.463 s
Press any key to continue.

好的,第二题:

int main()
{
char a[]="lavender";
char b[]="lavender";
char* c ="lavenderdfdf"; printf("%p,%p,%p\n",a,b);
printf("sizeof a is %d\n",sizeof(a));
printf("sizeof b is %d\n",sizeof(b));
printf("sizeof c is %d",sizeof(c));
return ;
}

输出是啥?你猜猜咯,顺便说一声,我的编译器的环境是32位的。

0028FF03,0028FE9F,0028FE98
sizeof a is
sizeof b is
sizeof c is
Process returned (0x0) execution time : 3.255 s
Press any key to continue.

答案

那么这个涉及到sizeof的一些用法,我自己也是半桶水,而且还写错了,引用一个链接,不权威,大家自己找答案:解析

第三个题目

下列选项中,能正确对字符串赋值的是
char s[]={'A','b','c','d','e'};
char *s = "ABCDE";
char s[][]={"ABCDE"};
char *s;gets(s);
char s[]="hi";s="bby";

请注意,只有第二个是对的哈。第一个末尾没有\0

第三个中的第一个字符串数组越界

第四个s没有初始空间

第五个字符数组的名字是常量,不可以更改

C语言之字符串典型例题解析的更多相关文章

  1. C语言里字符串的解析

      根据给定的字符串,按照一定规则解析字符串,卡住好几次,这次做个笔记,以供参考 函数名称:   strtok 函数原型:   char *strtok(char *s1, const char *s ...

  2. 《编译原理》构造 LL(1) 分析表的步骤 - 例题解析

    <编译原理>构造 LL(1) 分析表的步骤 - 例题解析 易错点及扩展: 1.求每个产生式的 SELECT 集 2.注意区分是对谁 FIRST 集 FOLLOW 集 3.开始符号的 FOL ...

  3. 《编译原理》LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析

    <编译原理>LR 分析法与构造 LR(1) 分析表的步骤 - 例题解析 笔记 直接做题是有一些特定步骤,有技巧.但也必须先了解一些基本概念,本篇会通过例题形式解释概念,会容易理解和记忆,以 ...

  4. C语言中字符串详解

    C语言中字符串详解 字符串时是C语言中非常重要的部分,我们从字符串的性质和字符串的创建.程序中字符串的输入输出和字符串的操作来对字符串进行详细的解析. 什么是字符串? C语言本身没有内置的字符串类型, ...

  5. R语言拆分字符串

    R语言拆分字符串 aaa<-"aa;bb;cc"ccc<-strsplit(aaa,split=";") bbb<- unlist(strsp ...

  6. C语言之字符串处理函数

    C语言中字符串处理函数介绍 下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数——输出字符串的函数 一般的形式为p ...

  7. Swift3.0语言教程字符串与URL的数据转换与自由转换

    Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...

  8. Swift3.0语言教程字符串与文件的数据转换

    Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...

  9. Swift3.0语言教程字符串转换为数字值

    Swift3.0语言教程字符串转换为数字值 Swift3.0语言教程字符串转换为数字值,在NSString中,开发者可以将字符串转换为数字值,通过这些数字值可以实现一些功能,如加法运算.减法运算等.数 ...

随机推荐

  1. C# 号码归属地查询算法(根据Android来电归属地二进制文件查询修改)

    前言 近期有个项目需要用到号码归属查询,归属地数据库可能比不上ip138,淘宝上也有卖的-,-! 文本提供一个279188条记录并压缩成562KB的归属地数据.我在互联网上搜索了相关文章,要不是数据库 ...

  2. StreamWriter(ms, new UTF8Encoding(false))可以达到不输出BOM的需求。

    winform 通过webservice向服务器提交图片需要注意的地方 最近一个winform项目中需要通过拍照或者上传本地文件或者截图的方式把产品图片上传到服务器,最后选择了服务器部署webserv ...

  3. c# winform 在一个窗体中使用另一个窗体中TextBox控件的值——解决办法

    [前提]一个winform应用程序项目中,窗体B,需要使用 窗体A 中一个TextBox控件的值,进行计算等操作. [解决方案] 1.在窗体A中定义:public static double a;// ...

  4. A*算法&博弈树α-β剪枝

    A*算法&博弈树α-β剪枝 A*算法/博弈树 前阵子考试学了A*算法.博弈树和回溯,自己真是愚蠢至极,根本没就搞明白这些,所以对于这些算法问道的话就不能说清楚,也记不住,所以才有了这篇笔记.在 ...

  5. linux命令——iotop

    查看CPU使用情况用top,查看I/O使用情况就需要iotop.这个命令是在 kernel v2.6.20中添加,安装的时候要注意内核的版本号. iotop常用快捷键 1. 左右箭头 --> 改 ...

  6. 【OpenMesh】使用迭代器和循环机

    原文出处: http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial.html 这个例子展现: 如何使用迭代器 如何使用循环机 这个 ...

  7. CSDN博客越来越垃圾了,到处放广告

    之前是在文章页放广告也就算了,现在连个人博客首页也要放广告!

  8. 从零开始学C++之构造函数与析构函数(一):构造函数、析构函数、赋值与初始化、explicit关键字

    一.构造函数.默认构造函数 (1).构造函数 构造函数是特殊的成员函数 创建类类型的新对象,系统自动会调用构造函数 构造函数是为了保证对象的每个数据成员都被正确初始化 函数名和类名完全相同 不能定义构 ...

  9. jvm回收对象

    jvm在判断对象死亡之前需要判断对象是否可到达,方法有引用计数算法和可达性分析算法,jvm采用的是后者.首先来了解一下这两种算法. 引用计数算法: 算法定义 为每个对象增加一个字段记录被引用的次数,并 ...

  10. 使用php完成常见的"文件上传"功能

    文件上传现在都是很常见的了,可以上传文件,上传头像等,不同的浏览器"文件上传"有不同的效果 先看下火狐浏览器的效果是这样的: 再看下IE浏览器是这样的: 还有很多其他的浏览器,就不 ...