C++自己注意到的一些问题

来源:互联网 发布:如何做淘宝美工 编辑:程序博客网 时间:2024/06/06 02:06

  前几天做一个课程设计  用到了MFC  偶然看见了一篇关于SDK的介绍文章  发现C其实还是可以做一些东西的  打算深入学习一下Windows下的编程  方向是游戏开发  然后拿出了C++的书重新过了一遍  有了一些问题和体会  在这里写下来  供自己以后改正  

  当学完了编译原理  组成原理  硬件相关的基础知识还有数据结构等课程后  再来看C就有不一样的体会了


1.  赋值和初始化不是一回事

  以前没有太在意这个问题  没初始化也无所谓  注意小心使用就可以了  大不了在定义的时候全部赋上初值  不过在使用一个字符数组时发现了了这样的一个问题:

char ptr[] = {"Hello", "MyGirl"} ; 
printf("%s",ptr) ; 
运行会出现这样的提示:  [Error] too many initializers for 'char []'  即给ptr的初始化太多了 

  但是按照我的设计  这个是用了一点小聪明  我定义一个字符数组ptr  后面的赋值相当于是使用了逗号运算符  实际上想要存储的值是"MyGirl"  前面的"Hello"是没有被引用到的  不过这样写会出现错误  后来想了想可能是这样的:这里的逗号相当于是给 ptr 初始化了"Hello"  然后又赋值了后面的  但是数组是不允许整体赋值的  所以出现了错误  


  改成指针数组来引用这两个 ptr:

char* ptr[] = {"Hello", "MyGirl"} ;printf("%s",ptr[0]) ; 
运行  没有任何问题  也就是说对于 ptr  我可以初始化一个值给它  但是不能直接赋值  这样会出错  

  C 是很强大的  但它的的强大很大程度上来自它支持抽象程序设计 要学会用 C++ 高效地编程 只是掌握句法和语义是远远不够的  必须能快速地写出安全  而且性能可与 C 语言低层程序相媲美的程序才行  看来自己还需要学习很多才行

原创粉丝点击