Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我是一名经验丰富的C#开发人员,要在C/C+中有效地编写代码,我应该知道什么+;?_C#_C++_C - Fatal编程技术网

I';我是一名经验丰富的C#开发人员,要在C/C+中有效地编写代码,我应该知道什么+;?

I';我是一名经验丰富的C#开发人员,要在C/C+中有效地编写代码,我应该知道什么+;?,c#,c++,c,C#,C++,C,我在大学时有一点c/c++方面的经验,但已经多年没有在这方面工作了。我需要知道什么样的事情才能成为c/c++工作职位的考虑对象?指针算法可能会在列表的顶部。此外,对非托管世界中的内存管理有很好的理解也会有所帮助,例如记住删除使用new构建的内容。即使在获得职位后,也可以随时学习语法。要考虑的重要问题是如何解决问题。什么算法对特定问题更有效。你还记得多少面向对象编程吗。你对指针和指针算法的掌握程度如何 我认为忘记一些语法是可以的,最重要的思考是如何解决问题。如果你已经了解C,那么你可能最想学习的是

我在大学时有一点c/c++方面的经验,但已经多年没有在这方面工作了。我需要知道什么样的事情才能成为c/c++工作职位的考虑对象?

指针算法可能会在列表的顶部。此外,对非托管世界中的内存管理有很好的理解也会有所帮助,例如记住删除使用new构建的内容。

即使在获得职位后,也可以随时学习语法。要考虑的重要问题是如何解决问题。什么算法对特定问题更有效。你还记得多少面向对象编程吗。你对指针和指针算法的掌握程度如何


我认为忘记一些语法是可以的,最重要的思考是如何解决问题。

如果你已经了解C,那么你可能最想学习的是内存管理、指针/引用和(对于C++)STL。

从实用的角度来看,我想说的是,首要任务是你再次在手动管理对象生命周期方面锻炼自己。C#和.Net世界中最大的省时功能是垃圾收集器提供的魔力。在托管世界中,仍然需要管理内存,但这是一项简单得多的任务,并且不一定与维护对象所有权和生命周期的心智模型有关

在C/C++中,您正在进入毛茸茸的内存管理、生命周期管理和对象所有权的世界

  • 内存管理(指针、内存分配、引用)

除了指针算法,内存管理是一个巨大的问题。

首先是内存管理,包括指针


学习跨平台编写代码(这是我喜欢的;)

我想这取决于你所指的是什么样的C/C++工作岗位。对于嵌入式工作,您最好熟悉指针并理解“volatile”关键字。对于更高级的东西(特别是C++),您可能想学习一些流行的库(STL、boost等)。对于大多数C编程来说,熟悉POSIX将非常重要


我想,第一个问题是内存管理。这意味着MalC/C++,NeX/Delphi,所有其他奇怪的C++(复制构造函数),以及<强>指针。

< P>这取决于你有什么经验。几乎没有人对C#及其周围的一切都有经验。 一件事可能是内存管理。另一方面,如果你对C#unsafe代码有丰富的经验,那么你几乎已经知道了其中的一切。 另一件事可能是平台/com的东西。如果你已经做了很多互操作编程,那也是一样的。
要想有效,你可能只需要一些练习。此外,编程风格通常也非常不同。

指针会造成伤害,请小心处理

我不得不不同意你收到的许多建议。您应该而不是专注于手动内存管理。然而,大多数C++代码根本不需要使用手动内存管理。手动内存管理在大量代码中被过度使用,导致了许多容易避免的问题

首先也是最重要的是要研究标准库。它与.NET有很大的不同(说得委婉一点)。我的立即建议是拿起一个加速C++的拷贝,并通过它。它是为你的位置(即学习C++)而设计的,但已经有至少一种其他语言的经验,而且对于这种情况,我确信没有更好的书可以使用。
编辑:(主要是回应肯尼的评论)——的确,特别是如果你在维护现有代码,你很有可能会被困在学习任何一个理智的人都可能宁愿避免的所有不愉快的事情上。同样,根据您加入的团队,即使在新代码中,您也可能会被难看所困扰。不幸的是,如果没有大量的语言背景和经验,可能根本找不到什么。

我可以想到的最重要的建议是:不要尝试用C++来编写C代码。避免使用新的创建对象,使用自由函数,忘记反射。。。把它当作一种完全不同的语言,试着从头开始学习。

我想要我的指针指向指针指向指针,宝贝

正如其他人所说,指针和内存管理应该是您的优先事项。你肯定需要理解指针。这是C/C++编程中最困难的概念。似乎很多人都无法在指针周围找到他们的想法,除非你这样做,否则你永远都不会成为C或C++程序员。p>
是的,有很多很好的库可以为您处理内存管理,但是,因为有很多代码是在没有这些库的情况下开发的,所以您可能要处理一些malloc/frees或new/delete。当然,除非你有幸进入一份只编写新代码的工作,而且你可以从一开始就“把事情做好”。如果你找到那家公司,请告诉我。我也想提交我的简历
选择一种语言并学习它。如果你愿意的话,再学另一个。C++更复杂,但你已经熟悉了很多。C不那么复杂,但做的事情与C不同。有了C,你就可以在一个较低的层次上编程,离机器更近,这可能是可取的,也可能是不可取的。

我会从另一个角度来处理内存管理问题:读一本书