Questions tagged «pointers»

“指向”存储在内存中的另一个值的数据类型。指针变量包含某个其他实体(变量或函数或其他实体)的内存地址。此标记应用于涉及使用指针而不是引用的问题。使用指针的最常见的编程语言是C,C ++,Go和汇编语言。使用特定的语言标签。其他有用的标记是描述指针用法的方法,函数,结构等。

12
指针与参考
给函数一个原始变量以供使用时,更好的做法是: unsigned long x = 4; void func1(unsigned long& val) { val = 5; } func1(x); 要么: void func2(unsigned long* val) { *val = 5; } func2(&x); 爱荷华州:有什么理由选择一个?


7
如何将对象传递给C ++中的函数?
我是C ++编程的新手,但是我有Java的经验。我需要有关如何将对象传递给C ++函数的指导。 我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对对象的引用的变量。 如果您还可以解释在哪里使用这些选项,那就太好了。

7
size_t与uintptr_t
C标准保证该size_t类型可以容纳任何数组索引。从逻辑上讲,这意味着size_t应该能够容纳任何指针类型。我在Google上发现的一些网站上读到这是合法的,并且/或者应该一直有效: void *v = malloc(10); size_t s = (size_t) v; 因此,在C99中,该标准引入了intptr_t和uintptr_t类型,保证可以容纳指针的有符号和无符号类型: uintptr_t p = (size_t) v; 那么使用size_t和之间有什么区别uintptr_t?两者都是无符号的,并且都应该能够容纳任何指针类型,因此它们在功能上似乎相同。除了清晰度之外,是否有任何真正令人信服的理由使用uintptr_t(或更好的是void *)而不是size_t?在不透明的结构中,该字段仅由内部函数处理,是否有任何理由不这样做呢? 出于同样的原因,ptrdiff_t它是一个有符号的类型,能够保存指针差异,因此能够保存大多数指针,那么它与intptr_t有何区别? 所有这些类型难道不是都为同一个功能提供了完全不同的版本吗?如果没有,为什么?我不能对其中一个进行处理,而对另一个却不能进行处理?如果是这样,为什么C99在该语言中添加了两种本质上多余的类型? 我愿意忽略函数指针,因为它们不适用于当前问题,但是我可以随意提及它们,因为我有一个偷偷摸摸的怀疑,它们将是“正确”答案的核心。
246 c  pointers  size-t 

14
指向类数据成员“ :: *”的指针
我遇到了一个编译正常的奇怪代码段: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } 为什么 C ++具有指向类的非静态数据成员的指针?什么是使用真正的代码,这个奇怪的指针?
242 c++  class  pointers  c++-faq 

4
何时使用哪种指针?
好的,所以我上一次写C ++为生时,std::auto_ptr所有的std lib都可用,而且boost::shared_ptr风靡一时。我从来没有真正研究过提供的其他智能指针类型。我知道C ++ 11现在提供了某些类型的boost,但不是全部。 那么,有人可以通过简单的算法来确定何时使用哪个智能指针吗?最好包括有关哑指针(原始指针,如T*)和其他Boost智能指针的建议。(喜欢的东西这将是巨大的)。



8
C中的char数组和char指针有什么区别?
我试图理解C中的指针,但目前对以下内容感到困惑: char *p = "hello" 这是一个从h开始指向字符数组的char指针。 char p[] = "hello" 这是一个存储hello的数组。 将这两个变量都传递给此函数有什么区别? void printSomething(char *p) { printf("p: %s",p); }
216 c  arrays  pointers 

17
在函数中返回数组
我有一个int arr[5]传递给函数的数组fillarr(int arr[]): int fillarr(int arr[]) { for(...); return arr; } 如何返回该数组? 我将如何使用它,说我返回了一个指针,我将如何访问它?

25
如果不是内存地址,C指针到底是什么?
在有关C的著名来源中,在讨论完&运算符后给出了以下信息: ...有点遗憾,因为[地址]仍然存在,因为它使那些不知道地址的人感到困惑,并误导了那些人:像指针一样思考指针通常会导致悲伤。 。 我读过的其他材料(我想从同样享有声誉的资料中)总是毫不掩饰地将指针和&运算符称为提供内存地址。我很乐意继续寻找问题的真实性,但是当有信誉的消息来源(KIND OF)不同意时,这会有些困难。 现在我有点困惑- 如果不是内存地址,那么指针到底是什么呢? 聚苯乙烯 作者后来说:...我将继续使用“住所”一词,因为发明一个不同的术语会更糟。

17
在C中通过引用传递
如果C不支持通过引用传递变量,为什么这样做有效? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } 输出: $ gcc -std=c99 test.c $ a.exe i = 21



3
X不实现Y(…方法具有指针接收器)
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 3个月前关闭。 改善这个问题 关于“ X不能实现Y(...方法具有指针接收器) ”的事情已经有一些问答,但是对我来说,他们似乎在谈论不同的事情,而不适用于我的具体情况。 因此,我没有使问题变得非常具体,而是使之变得笼统和抽象-似乎有几种不同的情况可能导致此错误发生,请有人总结一下吗? 即,如何避免该问题,如果发生,可能性是什么?谢谢。

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.