在下面的程序中,我调用一个函数foo()来设置一个全局变量i
,然后调用构造函数class A,其中i也应该设置,但是10.但是我的程序输出是3 0,你能解释一下吗?
#include <iostream>
int i;
class A
{
public:
~A()
{
i=10;
}
};
int foo()
{
i = 3;
A ob;
return i;
}
int main()
{
std::cout << "i = " << foo() << " " << i << "\n";
}
Run Code Online (Sandbox Code Playgroud) 我有一些代码具有多个彼此非常相似的功能,可以根据结构中一个字段的内容查找列表中的项目.这些函数之间的唯一区别是查找结构的类型.如果我可以传入类型,我可以删除所有代码重复.
我也注意到在这些函数中也发生了一些互斥锁定,所以我想我可能会把它们留下来......
我正在尝试检索IP Address程序中的本地计算机.操作系统是Ubuntu 8.10.我尝试使用gethostname()并gethostbyname()检索IP Address.我收到的答案是127.0.1.1.我了解到它似乎是一Debian件事:
这里链接的文件解释了这个想法.
我的/etc/hosts文件内容是:
127.0.0.1 localhost
127.0.1.1 mymachine
在这种情况下,有没有其他方式以编程方式(更喜欢C或C++)获取IP地址而不修改机器上的系统文件?
我必须编写一个使用链表的C程序.我已经创建了一个列表并添加了列表中的元素.但我不知道如何打印列表中的所有元素.该列表是字符串列表.我想我会以某种方式在列表中递增,打印出那里的每一个字符串,但我无法想办法做到这一点.
简短:如何打印linked list?
我对我的课程项目的表现有疑问.
我通过阅读文本文件形成了大约5000个游戏对象.我有一个Treemap(称为supertree)作为其节点Treemaps(我猜的迷你树图).这些nodes/mini treemaps是动作,战略,冒险,运动,游戏标题等.基本上游戏类型和这些迷你树将持有游戏对象.所以它supertree本身可能会持有8个nodes/treemaps.
当我插入游戏对象时,它将确定mini tree它将进入哪里并将其放入其中.例如,如果我插入游戏超级马里奥世界,它将检查它是哪种类型,并看到它adventure,所以超级马里奥世界将被插入adventure树.
所以我的问题是如果问题列出了所有的表现会是什么action games,因为Treemap得到的是O(log n)
首先在超级树上寻找Action Node/Treemap,它将采用O(log n).
然后一旦进入内部Action treemap,它将获得o(n log n)正确的所有元素吗?
那么总的表现log n * (n * log n)是否正确?哪个比最差o(n).
[编辑]希望这有点澄清了我的帖子.
当我必须在中打开一个文件夹时Windows Explorer(例如d:\myfolder\test),我使用::GetForegroundWindow()获取其文件夹Window Handle,并使用::GetWindowText获取标题文本。但是在默认窗口中,不会显示当前窗口的完整路径(当然,您可以通过tools-folder option-view-display full path在标题栏中设置标题栏以显示完整路径),::GetWindowText只有test。如果我想获得完整的路径d:\myfolder\test,我该如何通过获得的Windows手柄来获得此路径::GetForegroundWindow()?
有什么建议么。谢谢。
最近我遇到了一个包含数据类型的程序
uint32_t, uint32, uint64 etc.
Run Code Online (Sandbox Code Playgroud)
我可以在Windows 7(32位)中运行该程序而不进行任何更改吗?我使用Code :: Blocks 10.05和MingW.
如果需要更改,哪些数据类型可以替换它们?
另外我想知道C的哪个标准定义了uint32_t,uint32等?它是所谓的gcc C吗?
包含纯虚函数的类不能包含对象.这是我对纯虚函数的看法.我有以下程序,它编译没有任何错误.
#include<iostream>
using namespace std;
class Father {
public:
virtual void foo()=0;
};
class Son:public Father {
// Nothing here
};
int main() {
}
Run Code Online (Sandbox Code Playgroud)
这是预期的,因为这两个类都没有对象.但是当我试图从包含纯虚函数的类中获得多级继承时,下面的程序给了我错误.
#include<iostream>
using namespace std;
class Father {
public:
virtual void foo()=0;
};
class Son:public Father {
// Nothing here
};
class Grand_Son:public Son {
void foo() {
cout<<"\nFunction foo From Grand_Son\n";
}
};
int main() {
Grand_Son x;
x.foo();
}
Run Code Online (Sandbox Code Playgroud)
错误如下所示.
In function 'int main()':|
|error: 'virtual void Grand_Son::foo()' is private|
|error: within this …Run Code Online (Sandbox Code Playgroud) 我获得了关于静态变量存储的矛盾意见.
意见1:" 堆栈静态变量将其值存储在堆中 "
意见2:" 堆栈静态变量将其值存储在数据段中".
我对这些相互矛盾的答案感到困惑.
哪里存储了静态变量?
我期待着参考文献的答案(教科书,真实的教程等).
静态变量有两种类型:
我还想知道这两种变量的存储是否存在差异?
我试着执行以下代码,
int val=10;
printf("%d",++val++);
Run Code Online (Sandbox Code Playgroud)
正如所料,我收到以下错误消息," lvalue required as increment operand".但是,当我做出以下更改时,程序运行正常.
int val=10;
int *ptr=&val;
printf("%d",++*ptr++);
Run Code Online (Sandbox Code Playgroud)
该计划的产出为11.输出值并不令人惊讶.
但整个构造++*ptr++是一个lvalue而不是一个rvalue混乱.
我打印了ptr之前和之后的内容如下,
printf("%u\n",ptr);
printf("%d",++*ptr++);
printf("\n%d\n",ptr);
Run Code Online (Sandbox Code Playgroud)
2293532和2293536是在屏幕上打印的地址.所以显然ptr已经增加并且涉及指针添加.
输出有意义除了这样的事实*ptr检索其地址被存储在可变的含量ptr是10和++*ptr它递增到11.这绝对是一个rvalue.但是后期增量(++)已经被ptr我相信了.为什么这样?在C中管理此类绑定的规则是什么?
c ×7
c++ ×3
constructor ×1
debian ×1
heap ×1
ip-address ×1
java ×1
linked-list ×1
printing ×1
static ×1