有人可以解释为什么指针没有初始化NULL?
例:
void test(){
char *buf;
if (!buf)
// whatever
}
Run Code Online (Sandbox Code Playgroud)
程序不会进入if,因为buf它不是null.
我想知道为什么,在什么情况下我们需要一个带垃圾的变量,特别是指针解决内存上的垃圾问题?
究竟是什么val a: A = _初始化了一个值?这是一个打字的空吗?谢谢.
以下问题有多种答案/技巧:
我有几个答案,但需要进一步讨论.
考虑:
struct Person
{
int height;
int weight;
int age;
};
int main()
{
Person p { .age = 18 };
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在C99中是合法的,但在C++ 11中不合法.
什么是C++ 11标准委员会排除了这样一个方便的功能支持的理由?
何时初始化静态字段?如果我从不实例化一个类,但是我访问一个静态字段,是否所有静态块和私有静态方法用于实例化那个时刻调用的私有静态字段(按顺序)?
如果我调用静态方法怎么办?它是否也运行所有静态块?方法之前?
如果我有这样的结构:
typedef struct
{
unsigned char c1;
unsigned char c2;
} myStruct;
Run Code Online (Sandbox Code Playgroud)
将此结构初始化为0的最简单方法是什么?以下是否足够?
myStruct _m1 = {0};
Run Code Online (Sandbox Code Playgroud)
或者我需要将每个成员显式初始化为0吗?
myStruct _m2 = {0,0};
Run Code Online (Sandbox Code Playgroud) 我是Delphi的新手,我一直在运行一些测试来查看默认情况下初始化了哪些对象变量和堆栈变量:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Run Code Online (Sandbox Code Playgroud)
这是我习惯使用其他语言的行为,但我想知道在Delphi中依赖它是否安全?例如,我想知道它是否可能依赖于编译器设置,或者可能在不同的机器上以不同的方式工作.依赖于对象的默认初始化值是正常的,还是在构造函数中显式设置所有实例变量?
至于堆栈(过程级)变量,我的测试显示单位化布尔值为真,单位化整数为2129993264,未初始化对象只是无效指针(即不是nil).我猜测规范是在访问它们之前始终设置过程级变量?
我有以下代码:
List<Product> product = new List<Product>();
Run Code Online (Sandbox Code Playgroud)
错误:
Cannot instantiate the type List<Product>
Run Code Online (Sandbox Code Playgroud)
Product是我的EJB项目中的实体.为什么我收到此错误?
在C语言中,如果初始化一个这样的数组:
int a[5] = {1,2};
Run Code Online (Sandbox Code Playgroud)
那么未明确初始化的数组的所有元素将用零隐式初始化.
但是,如果我初始化这样的数组:
int a[5]={a[2]=1};
printf("%d %d %d %d %d\n", a[0], a[1],a[2], a[3], a[4]);
Run Code Online (Sandbox Code Playgroud)
输出:
1 0 1 0 0
Run Code Online (Sandbox Code Playgroud)
我不明白,为什么a[0]打印1而不是0?是不确定的行为?
注意:这个问题是在接受采访时提出的.
我不确定在初始化后以下列方式在char数组中会出现什么.
1. char buf[10] = "";
2. char buf[10] = " ";
3.char buf[10] = "a";
对于情况2,我认为buf[0]应该是' ',buf[1]应该是'\0',从buf[2]到buf[9]会随机内容.对于情况3,我认为buf[0]应该是'a',buf[1]应该是"\ 0",以及buf[2]到buf[9]会随机内容.
那是对的吗?
对于案例1,将会是什么buf?buf[0] == '\0'从哪里buf[1]到buf[9]随机内容?