根据我的知识,局部变量是未初始化的,即它包含垃圾值.但是下面的程序给出0(零)作为输出.
main()
{
int i;
printf("%d\n",i);
}
Run Code Online (Sandbox Code Playgroud)
当我在程序之上运行它总是给出0.我知道0也可以是垃圾值,但每次我得到零作为输出.任何人都可以知道它的原因吗?
假设我有一个包含长度为10的字符串的文件:
ABCDEFGHIJ
并使用fgets()大小为4的缓冲区逐行读取我的文本文件.我将fgets()在循环中调用以确保读取整行.但是,在第一次通话时,它会读出前三个字符(buffer size -1)吗?它是否还会在我的4个char缓冲区的最后一个位置附加一个空终止字符,即使没有到达我的字符串的真正结尾,或者它将填充4个字符并且在缓冲区末尾没有空终止字符?谁打电话是strlen()不可能的?
谢谢 :)
我需要在声明后将结构数组设置为 0。我可以这样做
main()
{
struct data dataarray[100];
memset(dataarray,0x00,sizeof(dataarray));
}
Run Code Online (Sandbox Code Playgroud)
但是如果我像下面那样做怎么办
main()
{
struct data dataarray[100] = {0}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用 memset() 则需要花费太多时间才能完成。我需要优化这个功能。那么我可以使用第二种方法将内存设置为0吗?第二种方法保证所有内存都初始化为 0 吗?
struct forcePin {
char _name[512];
};
struct forcePin *_forcePin[500000];
_forcePin[i] = (struct forcePin *) malloc (sizeof (struct forcePin));
Run Code Online (Sandbox Code Playgroud)
我可以知道如下所示的线路在做什么?
_forcePin[i] = (struct forcePin *) malloc (sizeof (struct forcePin));
Run Code Online (Sandbox Code Playgroud)
我不熟悉c,如果你能告诉我如何使这一行也是C++格式的.谢谢