我最近发布了一个问题: 静态类成员的初始化.
现在请检查此代码:
#include<iostream>
class A
{
static int obj_s;
public:
A()
{
obj_s++;
std::cout << A::obj_s << "\nObject(s) Created\n";
}
};
int A::obj_s = 0;
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
即使一个人没有创建任何A类对象,使该成员obj_s
保持一个值0
- 自定义之后是不是需要内存?
在C或C++中
if ( x )
statement1;
else
statement2;
Run Code Online (Sandbox Code Playgroud)
x
两个陈述的执行价值是什么?
我知道我们可以if-else
像这样一起执行:
if(1){
goto ELSE;
}
else{
ELSE:
}
Run Code Online (Sandbox Code Playgroud)
有什么办法,比如价值吗?(我认为这是不可能的.问,因为有人在争论!)
int i,n=20;
for(i=0;i<n;i--)
printf("-");
Run Code Online (Sandbox Code Playgroud)
我一直在喋喋不休,但却未能解决这个问题.
从上面的代码中删除任何单个字符或运算符,程序应打印" - "20次
请帮忙!
所以...假设我有这样的功能...
int function( const char *c )
{
//do something with the char *c here...
}
Run Code Online (Sandbox Code Playgroud)
这是什么char *c
意思?我认为我一般了解字符,但我不明白 * 的作用......或者它如何改变含义。
它在执行时崩溃:
#include <iostream>
int main ()
{
if(main());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么?
字符串操作问题
在上面的程序中(在C++ Primer,第三版作者Stanley B. Lippman,JoséeLajoie练习3.14中给出),字符指针的长度是len + 1
char *pc2 = new char[ len + 1];
Run Code Online (Sandbox Code Playgroud)
http://www.ideone.com/pGa6c 但是,在这个程序中,我所使用的字符指针的长度是len
char *pc2 = new char[ len ];
Run Code Online (Sandbox Code Playgroud)
当我们得到相同的结果时,为什么需要将新字符串的长度设置为1.请解释.
请注意,我在此处显示的程序略有改动.与书中的不完全相同.
在C/C++中,假设我有以下值:
int year = 2010;
int month = 6;
int day = 15;
int hour = 14;
int minute = 52;
int seconds = 34;
int microseconds = 141231;
Run Code Online (Sandbox Code Playgroud)
将此转换为时间段的最简单方法是什么?我认为timeval是自1970年1月1日以来的时间?但每次手动计算这个似乎非常繁琐.什么是最简单(也是最快)的方法?
谢谢
当我从go中的函数返回一个新对象时,我正在努力弄清楚到底发生了什么.
我有这个
func createPointerToInt() *int {
i := new(int)
fmt.Println(&i);
return i;
}
func main() {
i := createPointerToInt();
fmt.Println(&i);
}
Run Code Online (Sandbox Code Playgroud)
返回的值是
0x1040a128
0x1040a120
Run Code Online (Sandbox Code Playgroud)
我希望这两个值是相同的.我不明白为什么有8字节的差异.
在我所看到的等效C代码中:
int* createPointerToInt() {
int* i = new int;
printf("%#08x\n", i);
return i;
}
int main() {
int* r = createPointerToInt();
printf("%#08x\n", r);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
返回的地址是相同的:
0x8218008
0x8218008
Run Code Online (Sandbox Code Playgroud)
我在这里错过了一些令人目眩的事吗?任何澄清将不胜感激!
让我们说我有
#include<stdio.h>
#include"File2.c"
void test(void)
{
sum(1,2);
}
int main(void)
{
int sum(int a,int b);
test();
sum(10,20);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
int sum(int x,int y)
{
printf("\nThe Sum is %d",x+y);
}
Run Code Online (Sandbox Code Playgroud)
现在我的理解是test()调用sum()应该给出一个编译时错误,因为我已经/声明了sum()本地到main,我没有得到,并且程序运行良好没有任何错误.
我的主要目的是在File2.c中定义sum并使其为main()的本地,这样其他函数就无法看到这个函数sum().
我哪里错了?