小编Dra*_*276的帖子

简单的C代码片段

我很难理解这两个源代码的打印值.

#include<stdio.h>
    void a(void){
    int a;
    a++;
    printf("%d\n",a);
}

int main(void){
    a(); 
    a();
    a();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这个代码打印出"1 2 3",而第二个代码:

#include<stdio.h>
void a(void){
    int a;
    a++;
    printf("%d\n",a);
}

int main(void){
    int b;
    printf("%d\n",b);
    a(); 
    a();
    a();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印出:"0,垃圾值,相同的垃圾值+1,相同的垃圾值+2".

主函数(或任何其他函数)中的任何未初始化对象是否应该被赋予随机(垃圾)值?

更新:我觉得解释"变量是未初始化的,所以他们可以从其他程序获得任何剩余的值 - > UB"是不够的.我可以复制粘贴相同的源代码100次,仍然得到打印值0.我使用的是gcc 4.4.3.

c

1
推荐指数
1
解决办法
2516
查看次数

声明一个包含很多指针的函数

如何声明f作为指向函数的指针(指向指向整数的指针,双精度)以返回指向整数的指针

我尝试了很多变种,包括:

(int**)(f*)(int**,double)
(**int)(f*)(int**,double)
*(int)(f*)(int**,double)
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
78
查看次数

标签 统计

c ×2