假装认真分析面试题
TW面试题目 2019
题目(三个图片)
为什么这个截图这么的不清晰?
解析
第一题
'\0'
代表的是字符串中的终止符,当读到'\0'
时停止
拓展:
'\n'
第二题
void main()
{
char a[666];
printf("%d",strlen(a));
return 0;
}
//我很好奇这种代码是怎么写的
//用int定义主函数来返回状态值多好啊
//而且什么库都没有
//warings还是蛮多的
更加标准一点:
#include <stdio.h>
#include <string.h>
#define L(a) (int)(sizeof(a)/sizeof( 0[a]))
int main()
{
char a[666];
printf("%u %d", (int)(strlen(a)),L(a));
return 0;
}
//没有warnings
//这种数组写法就说得更远了
//因为指针和数组是同中定义下的不同表现
strlen(char*)函数求的是字符串的实际长度,
它从开始一直到第一个'\0'
就停止,如果你只定义没有给它赋初值,
这个结果是不定的,它会从a首地址一直找下去,直到遇到'\0'
停止
因为我的编译器的缘故,编译器给了第一位'\0'
故长度是0
那么根据这个方法可以完美的出上面的第一题的的长度是2
跟sizeof区别开
strlen:是函数库里的函数,需加载string.h
C cstring
C++
返回类型是unsigned long long
可翻遍头文件
只有这些:size_t __cdecl strlen(const char *_Str);
论坛上说估计只有原作者才知道自己写了些什么…
翻得我是头昏脑胀
sizeof:这是关键字哟,关键字哟,哟~~
这个返回的是内存字节数哟~~
可以对变量类型甚至函数也可以使用哟~
说到宏定义
叫批量处理
批量处理? -> .bat文件? -> @echo off? -> g++? -> cmd?(windos)
#define 标识符 替换列表
#define L(a) sizeof(a)/sizeof([0] a)
定义常量,设置转换,将长长的语句简短,同时提高可读性
既不运算,只是替换.
例如:
// #define [name] 表达式
#define Handsome_Boy_CBW true
#define He_is_so_handsome &&
#define That_he_is_not_confidence true
第三题
冯诺依曼体系是什么?