我输入以下示例:
#include <iostream>
double f(double* x, double* y)
{
std::cout << "val x: " << *x << "\n";
std::cout << "val y: " << *y << "\n";
return *x * *y;
}
double f2(double &x, double &y)
{
std::cout << "val x: " << x << "\n";
std::cout << "val y: " << y << "\n";
return x * y;
}
int main()
{
double a, b;
a = 2;
b = 3;
std::cout << f(&a, &b) << "\n";
std::cout …Run Code Online (Sandbox Code Playgroud) 是不是首先std::unique_ptr::get打败了unique_ptr的目的?我本来期望这个函数改变它的状态,所以它不再有指针.是否有实际有用的std :: unique_ptr :: get?
我确实在SO上发现了一些类似标题的问题 - 但是当我读到答案时,他们关注的是问题的不同部分,这些部分是非常具体的(例如STL /容器).
有人可以告诉我为什么你必须使用指针/引用来实现多态?我可以理解指针可能会有所帮助 - 但肯定只能引用区分传值和传递参考?
当然,只要你在堆上分配内存 - 这样你就可以拥有动态绑定,那么这就足够了 - 显然不是.
最近在我的C肌肉上工作,并查看我一直在使用它的许多图书馆,这当然让我很好地了解了什么是好的做法.我没见过的一件事是一个返回结构的函数:
something_t make_something() { ... }
Run Code Online (Sandbox Code Playgroud)
从我所吸收的,这是"正确"的方式:
something_t *make_something() { ... }
void destroy_something(something_t *object) { ... }
Run Code Online (Sandbox Code Playgroud)
代码片段2中的体系结构比片段1更受欢迎.所以现在我问,为什么我会直接返回一个结构,就像在代码片段1中一样?当我在两种选择中做出选择时,我应该考虑哪些差异?
此外,该选项如何比较?
void make_something(something_t *object)
Run Code Online (Sandbox Code Playgroud) 在Richard Reese所着的"理解和使用C指针"一书中,它在第85页说
Run Code Online (Sandbox Code Playgroud)int vector[5] = {1, 2, 3, 4, 5};生成的代码与生成的代码
vector[i]不同*(vector+i).该表示法vector[i]生成从位置向量开始的机器代码,从该位置移动i位置,并使用其内容.符号*(vector+i)生成的机器代码从位置开始vector,添加i到地址,然后使用该地址的内容.结果相同,生成的机器代码不同.这种差异对大多数程序员来说很少有意义.
你可以在这里看到摘录.这段经文是什么意思?在什么情况下,任何编译器都会为这两个编译器生成不同的 "移动"与基础之间是否存在差异,而"添加"基数是否存在差异?我无法让它在GCC上工作 - 生成不同的机器代码.
我刚开始学习Objective-C,来自VB .Net和C#.Net背景.我理解指针用法,但在Objective-C示例中,我看到星号放在几个不同的地方,并尽可能搜索,我无法找到答案为什么会这样.我尝试的每一次搜索都会出现关于指针的各种解释(我真的不需要),但没有提到星号不同位置的原因/影响.以下是我见过的一些例子:
NSString *string;
NSString * string;
(NSString *) string;
NSString* string;
Run Code Online (Sandbox Code Playgroud)
星号的这些不同位置是什么意思?我确信这是一个简单的答案,但到目前为止,无法在任何Apple教程和参考文档或在线中找到它是令人沮丧的.
有人可以结束我的痛苦并回答这个令人困惑的问题吗?谢谢!
我正在尝试将内部语言(ihl)交叉编译为Python.
ihl的一个特性是指针和引用,其行为与您对C或C++的期望相同.
例如,你可以这样做:
a = [1,2]; // a has an array
b = &a; // b points to a
*b = 2; // derefernce b to store 2 in a
print(a); // outputs 2
print(*b); // outputs 2
Run Code Online (Sandbox Code Playgroud)
有没有办法在Python中复制此功能.
我应该指出,我认为我困惑了一些人.我不想要Python中的指针.我只是想从Python专家那里得到一个感觉,我应该生成什么样的Python来模拟我上面展示的情况
我的Python不是最好的,但到目前为止,我的探索还没有产生任何有希望的东西:(
我应该指出,我们正在寻求从我们的ihl转向更常用的语言,因此如果有人可以提出可能更适合的另一种语言,我们就不会真正与Python绑定.
我知道每个人都讨厌搞砸.在我的代码中,由于我考虑过并且很满意的原因,他们提供了一个有效的解决方案(即我不是在寻找"不要那样做"作为答案,我理解你的预订,并理解我为什么使用它们无论如何).
到目前为止,它们一直很棒,但我希望以这样的方式扩展功能,这要求我基本上能够存储指向标签的指针,然后再转到它们.
如果此代码有效,它将代表我需要的功能类型.但它不起作用,30分钟的谷歌搜索没有透露任何东西.有没有人有任何想法?
int main (void)
{
int i=1;
void* the_label_pointer;
the_label:
the_label_pointer = &the_label;
if( i-- )
goto *the_label_pointer;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 常量0用作C和C++中的空指针.但随着问题"指向一个特定的固定地址 "似乎有一些可能使用分配固定地址.在任何系统中,对于访问地址0的任何低级任务,是否有任何可能的需求?
如果有,那怎么解决0为空指针而全部?
如果没有,是什么让它确定没有这种需要?