标签: pointers

为什么要使用双指针?或者为什么要使用指针指针?

什么应该在C中使用双指针?任何人都可以用一个例子来解释

我所知道的是双指针是指向指针的指针.为什么我需要一个指针指针?

c pointers

247
推荐指数
11
解决办法
20万
查看次数

size_t vs. uintptr_t

C标准保证这size_t是一种可以保存任何数组索引的类型.这意味着,逻辑上,size_t应该能够保存任何指针类型.我在Googles上发现的一些网站上看到这是合法的和/或应该始终有效:

void *v = malloc(10);
size_t s = (size_t) v;
Run Code Online (Sandbox Code Playgroud)

那么在C99中,标准引入了intptr_tuintptr_t类型,它们是有符号和无符号类型,保证能够保存指针:

uintptr_t p = (size_t) v;
Run Code Online (Sandbox Code Playgroud)

那么使用size_t和有uintptr_t什么区别?两者都是无符号的,并且两者都应该能够保存任何指针类型,因此它们在功能上看起来相同.除了清晰度之外,是否有任何真正令人信服的理由uintptr_t(或者更好的是,a void *)而不是a size_t?在一个不透明的结构中,字段只能由内部函数处理,有没有理由不这样做?

出于同样的原因,ptrdiff_t一直是一个能够保持指针差异的签名类型,因此能够容纳大多数指针,那么它与它intptr_t有何区别?

是不是所有这些类型基本上都服务于同一功能的不同版本?如果没有,为什么?对于其中一个我不能用另一个做什么我不能做什么?如果是这样,为什么C99会在语言中添加两种基本上多余的类型?

我愿意忽略功能指针,因为它们不适用于当前的问题,但随意提及它们,因为我有一种潜在的怀疑,它们将成为"正确"答案的核心.

c pointers size-t

245
推荐指数
5
解决办法
6万
查看次数

如何将对象传递给C++中的函数?

我是C++编程的新手,但我有Java经验.我需要有关如何将对象传递给C++中的函数的指导.

我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对象引用的变量.

如果您还可以解释在哪里使用这些选项,那将会很棒.

c++ pointers c++-faq pass-by-reference pass-by-value

245
推荐指数
4
解决办法
13万
查看次数

C中的箭头运算符( - >)用法

我目前正在通过阅读一本名为"21天自学C"的好初学者的书来学习C(我已经学习了Java和C#,所以我的动作速度要快得多).我正在阅读有关指针的章节,而 - >(箭头)操作符出现时没有解释.我认为它用于调用成员和函数(比如.(点)运算符,但是用于指针而不是成员).但我不完全确定.我可以获得解释和代码示例吗?

c syntax pointers

245
推荐指数
7
解决办法
44万
查看次数

什么是uintptr_t数据类型

什么是uintptr_t以及它可以用于什么?

c++ types pointers

233
推荐指数
5
解决办法
16万
查看次数

我什么时候使用哪种指针?

好吧,所以我最后一次以C++为生,std::auto_ptr所有的std lib都可用,而且boost::shared_ptr风靡一时.我从未真正研究过提供的其他智能指针类型.我知道C++ 11现在提供了一些类型的提升,但不是全部.

那么有人有一个简单的算法来确定何时使用哪个智能指针?优选地包括关于哑指针(诸如原始指针T*)和其他增强智能指针的建议.(像这样的东西会很棒).

c++ pointers smart-pointers c++-faq c++11

224
推荐指数
4
解决办法
3万
查看次数

指向类数据成员"::*"的指针

我遇到了这个编译好的奇怪的代码片段:

class Car
{
    public:
    int speed;
};

int main()
{
    int Car::*pSpeed = &Car::speed;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么 C++有一个指向类的非静态数据成员的指针?在实际代码中这个奇怪的指针有什么用?

c++ pointers class c++-faq

223
推荐指数
8
解决办法
15万
查看次数

223
推荐指数
4
解决办法
17万
查看次数

在C++中通过引用传递指针是否有好处?

在C++中通过引用传递指针有什么好处?

最近,我看到一些例子选择通过指针传递函数参数而不是通过引用传递.这样做有好处吗?

例:

func(SPRITE *x);
Run Code Online (Sandbox Code Playgroud)

随叫随到

func(&mySprite);
Run Code Online (Sandbox Code Playgroud)

func(SPRITE &x);
Run Code Online (Sandbox Code Playgroud)

随叫随到

func(mySprite);
Run Code Online (Sandbox Code Playgroud)

c++ pointers parameter-passing pass-by-reference

220
推荐指数
6
解决办法
12万
查看次数

sizeof(某些指针)总是等于4吗?

例如: sizeof(char*)返回4一样int*,long long*,我已经竭尽所能.这有什么例外吗?

c c++ memory pointers sizeof

217
推荐指数
8
解决办法
11万
查看次数