Questions tagged «pointers»

指针是一种数据类型,其值直接使用其地址直接引用(或“指向”)存储在计算机内存中其他位置的另一个值。

22
空引用真的是一件坏事吗?
我听说它说在编程语言中包含空引用是“十亿美元的错误”。但为什么?当然,它们会导致NullReferenceExceptions,但是那又如何呢?如果使用不当,该语言的任何元素都可能成为错误的来源。 还有什么选择?我想不是这样说: Customer c = Customer.GetByLastName("Goodman"); // returns null if not found if (c != null) { Console.WriteLine(c.FirstName + " " + c.LastName + " is awesome!"); } else { Console.WriteLine("There was no customer named Goodman. How lame!"); } 您可以这样说: if (Customer.ExistsWithLastName("Goodman")) { Customer c = Customer.GetByLastName("Goodman") // throws error …

4
Java引用与C指针有何不同?
C有指针,Java有所谓的引用。从某种意义上说,它们有共同点,即它们都指向某个事物。我知道C中的指针存储它们指向的地址。参考也存储地址吗?除了指针更灵活,更容易出错之外,它们又有何不同?
97 java  c  pointers  reference 

16
年轻人需要学习指针概念吗?
为什么C大师Dennis Ritchie会在C中引入指针?以及为什么其他编程语言(例如VB.NET或Java或C#)消除了它们?我在Google中找到了一些要点,我也想听听您的评论。他们为什么要消除现代语言中的指针概念? 人们说C是基本语言,而指针是使C强大而又出众且使C仍能与更多现代语言竞争的概念。那么为什么他们要用更现代的语言消除指针呢? 您认为指针知识对于新程序员仍然重要吗?如今,人们正在使用VB.NET或Java,它们支持比C更高级的功能(并且不使用任何指针概念),而我现在看到的许多人(我的朋友)选择这些语言而忽略了C,因为它们支持高级功能。我告诉他们以C开头。他们说,当您在VB.NET或Java中进行高级的操作(在C中无法实现)时,学习指针的概念很浪费。 你怎么看? 更新时间: 我在Google上读到的评论是: 较早的计算机速度太慢且未优化。 使用指针可以直接访问地址,这样可以节省时间,而不是在函数调用中复制它。 使用指针的安全性要差得多,这就是Java和C#不包含指针的原因。 这些以及更多我发现的东西。我仍然需要一些有价值的答案。这将不胜感激。

30
指针有什么好的解释?[关闭]
在您自己的学习中(无论是自己学习还是上课),当您最终真正理解指针时,您是否有一个“啊哈”时刻?您对初学者使用的解释是否似乎特别有效? 例如,当初学者第一次在C语言中遇到指针时,他们可能只添加&s和*s,直到它编译为止(就像我自己曾经做的那样)。也许是一张图片,或者是一个动机很好的例子,使指针为您或您的学生“点击”。那是什么,在那之前您尝试了什么却似乎没有用?是否有任何主题的前提条件(例如结构或数组)? 换句话说,当您可以放心使用&s和时*,要理解它们的含义是什么?仅学习语法和术语或用例还不够,有时需要将想法内在化。 更新:到目前为止,我真的很喜欢答案。请让他们来。这里有很多不错的观点,但是我认为在我们将概念内部化之后,许多都是对自己的很好的解释/口号。我正在寻找黎明时分的详细情况和情况。 例如: 我在语法上只稍微了解了C指针。我听到我的两个朋友向另一个朋友解释了指针,后者问为什么将a struct与指针一起传递。第一个朋友谈论了如何引用和修改它,但这只是另一个朋友的简短评论,它打动了我:“它也更有效率。” 我需要的最后一个概念上的转变是传递4个字节而不是16个字节。




1
raw,weak_ptr,unique_ptr,shared_ptr等…如何明智地选择它们?
C ++中有很多指针,但是老实说,在5年左右的C ++编程中(特别是Qt Framework),我仅使用旧的原始指针: SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); 我知道还有很多其他“智能”指针: // shared pointer: shared_ptr<SomeKindofObject> Object; // unique pointer: unique_ptr<SomeKindofObject> Object; // weak pointer: weak_ptr<SomeKindofObject> Object; 但是我对如何处理它们以及在原始指针比较中它们可以为我提供什么一无所知。 例如,我有这个类头: #ifndef LIBRARY #define LIBRARY class LIBRARY { public: // Permanent list that will be updated from time to time where // each items …

19
现实世界中的应用程序是否需要128位平面地址空间?
这有点“一个兆字节对于任何人都足够”,但是... 64位平面地址空间所提供的空间比32位地址空间多出多达43亿十亿倍。那是17,179,869,184 GiB。 显然,从8位到16位的转换非常快(我以80年代少年时期的方式查看事物,而忽略了所有那些大型机和小型机,因为它们无法运行Elite端口)。从16位到32位的转换花费了更长的时间,而32位实际上持续了一段时间。 现在我们有64位,是否愚蠢地说“ 17,179,869,184 GiB对任何人都足够”? 这是一个程序员的问题,因为我确实牢记编程观点。即使某天的计算机上看似无限的工作内存,也并不意味着应用程序将需要看似无限的平面地址空间。 基本上,我们程序员可以松一口气说:“好吧,不管整数或浮点数可以做什么,至少我不必担心指针会增长吗?”。

10
指针在C语言中保存的数据的“类型”是什么?
我知道指针保存地址。我知道,指针的类型基于它们指向的数据的“类型”而被“一般地”知道。但是,指针仍然是变量,它们所持有的地址必须具有数据“类型”。根据我的信息,地址为十六进制格式。但是,我仍然不知道该十六进制是什么“数据”类型。(请注意,我知道十六进制是什么,但是10CBA20例如,当您说这是一个字符串吗?整数吗?是什么?当我想访问该地址并对其进行操作..本身时,我需要知道其类型。这这就是为什么我问。)
30 c  pointers 


10
使用指针变量不是内存开销吗?
在C和C ++之类的语言中,使用指向变量的指针时,我们还需要一个内存位置来存储该地址。那这不是内存开销吗?如何补偿?时间紧迫的低内存应用程序中使用指针吗?
29 c++  c  pointers 

3
为什么long int在某些计算机上占用12个字节?
在我的机器上编译以下代码后,我发现了一些奇怪的事情: #include <stdio.h> int main() { printf("Hello, World!\n"); int a,b,c,d; int e,f,g; long int h; printf("The addresses are:\n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x", &a,&b,&c,&d,&e,&f,&g,&h); return 0; } 结果如下。注意,每个int地址之间有4个字节的差异。但是,在最后一个int和长整数之间有12个字节的差异: Hello, World! The addresses are: da54dcac da54dca8 da54dca4 da54dca0 da54dc9c da54dc98 da54dc94 …
26 c  memory  pointers 

4
为什么C ++和Java都使用“引用”概念,但含义却不同?
在C ++中,对函数的引用参数允许函数使引用引用其他内容: int replacement = 23; void changeNumberReference(int& reference) { reference = replacement; } int main() { int i = 1; std::cout << "i=" << i << "\n"; // i = 1; changeNumberReference(i); std::cout << "i=" << i << "\n"; // i = 23; } 类似地,如果我们尝试更改引用,则对函数的常量引用自变量将引发编译时错误: void changeNumberReference(const int& reference) …
26 java  c++  pointers  reference 

3
为什么要增加指针?
我最近才开始学习C ++,并且由于大多数人(根据我一直在阅读的内容),我一直在努力使用指针。 不是传统意义上的,我了解它们的含义,为什么使用它们,以及它们如何有用,但是我无法理解递增指针的使用方式,谁能提供一个解释如何递增指针的解释。有用的概念和惯用的C ++? 在我开始阅读Bjarne Stroustrup 的《A C ++之旅》一书之后,就提出了这个问题,我被推荐这本书,因为我对Java非常熟悉,Reddit的家伙告诉我这将是一本很好的“转换”书。 。
25 c++  c  pointers 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.