//腾讯QQ2008年笔试题中的附加题(30分)
//从程序健壮性进行分析,下面的FillUserInfo函数和main函数分别
//存在什么问题?#include <iostream>
#include <string>
#include <memory>#define MAX_NAME_LEN 20struct USERINFO
{int nAge;char szName[MAX_NAME_LEN];
};void FillUserInfo(USERINFO* parUserInfo)
{std::cout<<"请输入用户的个数:";int nCount=0;std::cin>>nCount;for(int i=0;i<nCount;i++){std::cout<<"请输入年龄:";//原先是这样的//std::cin>>parUserInfo[i]->nAgestd::cin>>parUserInfo[i].nAge;std::string strName;std::cout<<"请输入姓名:";std::cin>>strName;strcpy(parUserInfo[i].szName,strName.c_str());}
}int main(int argc,char* argv[])
{//USERINFO arUserInfos[2]={0};USERINFO arUserInfos[2];ZeroMemory(arUserInfos, sizeof(arUserInfos));FillUserInfo(arUserInfos);printf("The first name is:");printf(arUserInfos[0].szName);printf("\n");return 0;
}//********************************************************************
// 百度知道上某牛人给的解答:
// 1:函数入口未验证.要防止FillUserInfo(USERINFO* parUserInfo)的
//   参数指针是【非法指针】。
//   入口验证可以这样写:ASSERT(parUserInfo);
//   或:
//   if(parUserInfo == NULL){return;}
// 2:从设计的角度来说,把数据长度的限定和数据传递值分开是非常危险的。
//   比如FillUserInfo(USERINFO* parUserInfo)我传了USERINFO arUserInfos[100]
//   进去,里面输入nCount的时候我输入101呢?一般来说应该FillUserInfo(USERINFO*
//   parUserInfo,int nSize);传入一个需要赋值的长度参数.而且你在函数里面也无法
//   计算parUserInfo的长度.
// 3:将std::string赋值给【C风格字符串】是十分危险的。string是动态开辟内存,
//   【长度是无限的】。如果超过C风格数组的长度即MAX_NAME_LEN很容易造成栈溢出
//    或内存访问崩溃。如需这样用.请用strncpy(parUserInfo[i].szName,strName.c_str(),20);
// 4:一个细节.for(int i=0;i<nCount;i++)
//   虽然C++支持定义时使用,但不建议这么写。不同版本的编译器对此理解不同,不利于
//   扩展和向上升级。微软建议还是用
//   int i = 0 ;
//   for(i=0;i<nCount;++i)
// 5:USERINFO arUserInfos[100]={0};结构体赋值不建议这么做。
//   有两种推荐的安全做法
//   1--构造函数初始化.
//   2--ZeroMemory(arUserInfos,sizeof(arUserInfos)); 调用memset置零
// 6:混用printf和cout,cin也是不好的,虽然不会有危险,但是其使用不同的缓冲流可能
//   存在输出顺序混乱的问题
//************************************************************************//************************************************************************
// 【关于c_str()函数的学习】
// 1,C语言中没有string类型,C++中为了与C语言兼容,使用string类对象的
//    成员函数c_str()把string对象转换成C中的字符串样式
//    注意:一定要使用strcpy()函数等操作c_str()返回的指针
//    原因:c_str函数的返回值是const char *的,不能直接赋值给char *
//    包含的头文件:<cstring>
// 2,最好不要这样写:
//    char *c;
//    string s = "1234";
//    c = s.c_str();
//
//************************************************************************

腾讯QQ2008年笔试题中的附加题(30分)相关推荐

  1. 最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析

    最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的 i .每次从通里面拿 ...

  2. 百度 阿里 华为 腾讯 谷歌面试笔试题及解析

    8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面拿出来两个球:     ii.如果取出的是两 ...

  3. 【转】2014百度 阿里 华为 腾讯 谷歌面试笔试题及解析

    原文: http://www.cnblogs.com/JuneWang/p/3773880.html 已知memcpy的函数为: void* memcpy(void *dest , const voi ...

  4. 最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析 (转)

    原文地址:http://m.blog.csdn.net/blog/panfengyun12345/12618453 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有 ...

  5. 2022腾讯前端实习生笔试题与部分详细题解

    2022腾讯前端实习生笔试题与部分详细题解 前言与详细题目和个人题解 一.根据给定深度实现数组的扁平化 二.股票买入卖出收益最大化 欢迎交流和指正 前言与详细题目和个人题解 4月24晚举行的笔试,我做 ...

  6. 2016百度春招笔试题(高中熟悉的题现在却变得陌生)

    一.前言 前几个星期的面试题都有点稀奇古怪,这个星期来一个正常点的题目,可是这题目可能对于个别人来说是如此的熟悉但又很陌生.因为那是我们高中时常做的题目,现在却还给老师了.那让我们好好回忆一下. 二. ...

  7. 腾讯校园招聘会笔试题 难题解析

    1. 数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环的磁道上有10个物理块,10个数据记录R1------R10存放在这个磁道上,记录的安排顺序如下表所示: 物理块 1 2 3 4 5 6 ...

  8. 牛客 腾讯算法岗 笔试题整理

    牛客腾讯笔试题真题题解 格雷码 # -*- coding:utf-8 -*-class GrayCode:def getGray(self, n):GrayList = []tmp_list_0, t ...

  9. 史上最细的FIFO最小深度计算,(大多数笔试题中都会涉及)

    转载地址:https://www.cnblogs.com/dxs959229640/p/8144656.html 作者:星雨夜澈  出处:http://www.cnblogs.com/dxs95922 ...

最新文章

  1. 【非专业评测】发蜡、发膏、发泥、发油、啫喱、发膜、发胶、干胶、发棒、摩丝
  2. Linux下nginx支持.htaccess文件实现伪静态的方法!
  3. Flutter GitHub Travis CI 搭建
  4. 正向代理反向代理 简(fu)明(za)解释
  5. MyEclipse6.0下代码提示(alt+/)无法使用的解决方法
  6. 惊了,电子元件还能这样玩?这是电子器件的艺术魅力
  7. [FY20 创新人才班 ASE] 第 1 次作业成绩
  8. 苹果手机屏幕镜像搜索不到电视_最全小米电视投屏教程(建议收藏)
  9. 安装Whl文件时提示 ....whl is not a valid wheel filename
  10. Hadoop三大发行版本简单介绍
  11. 红宝书考研单词(四级到考研和六级的过渡词汇)
  12. Kubernetes:应用部署、应用了解、应用公布、应用伸缩,-image=ikubernetes/myapp:v1
  13. 贵金属行情价格走势图,香港十大杰出贵金属交易平台排名2023
  14. 使用超声波测距模块控制LED灯
  15. elo算法c语言,王者荣耀Elo机制?你中招了吗?
  16. Vue3在当前h5界面禁用移动端物理返回键代码
  17. Android 10 设置壁纸流程
  18. Clark变化和Park变换
  19. Win7只能安装Office2016,OfficeTool安装的2019疑似2016
  20. 迅雷看看免费高清影视 v4.9.15.2156 绿色免费版

热门文章

  1. 中国“千禧一代”是一群什么样的消费者?
  2. VMWare中CentOS7增加系统盘空间
  3. JLINK烧写U-boot到NAND Flash中
  4. 【无用之书】侦探小说的二十条规则
  5. c语言while输出26个字母,菜鸟求助,写一个随机输出26个英文字母的程序
  6. 五个强盗分金币的问题分析(博弈论)
  7. 使用神经网络识别手写数字
  8. ubuntu虚拟机中的vscode:扩展失败XHR Failed
  9. 事件的互不相容和独立的区别
  10. 云南省增值税发票综合平台(修订版)----发票抵扣勾选教程---