#include <stdio.h>
int* func()
{
static int a = 5; /* line 5 */
printf("%d\n",++a);
return &a; /* line 7 */
}
int main(void)
{
int *b = func(); /* line 12 */
(*b)++;
func();
}
Run Code Online (Sandbox Code Playgroud)
这是编码作业的测试代码示例,因此不一定是最佳的.我有基本的c ++和Java知识,但是这些是C中的指针,我遇到了麻烦.
func()的返回类型是指针,但它返回整数的地址(第7行).整数是静态的(第5行)是否必须对此做任何事情?
第12行实际上做了什么?
此代码的输出是:
6
8
我正在使用一个其构造函数在实现中声明并初始化静态const变量的类。这不是该类的数据成员。我了解在这种情况下使用const,但是使用static有什么好处呢?
我知道该类的所有实例都共享静态const全局常量。构造函数内部的变量也会发生这种情况吗?
另外,为什么不像其他两个那样在Global范围内对此进行定义?那就是我通常定义常量的地方。
示例代码:
#includes...
static const int GLOBAL_CONST1 = 100;
static const double GLOBAL_CONST2 = 1.0;
SomeClass::SomeClass()
:
theDataMember1 (),
theDataMember2 (),
...
{
static const double SOME_VAR = 0.01; // Why not declare this globally?
theDataMember1 = SomeIncludedClass(SOME_VAR);
}
Run Code Online (Sandbox Code Playgroud)