Tag: 变量

C中未初始化的变量

我有点困惑。 据我所知,如果你在C中声明一个int,而不是初始化它,例如: int x; 所以它的价值是不确定的。 因此,如果我们尝试使用它或应该有未定义的行为。 所以如果我在VS2010中运行以下代码它会使程序崩溃。 int main(){ int a; printf(“%d\n”,a); return 0; } 现在让我们来看看下一个代码,它不提供任何警告而且不会崩溃 (为什么?) void foo(int *var_handle){ // do nothing } int main(){ int a; foo(&a); printf(“%d\n”,a); // works, prints some big value return 0; } 你能解释一下这种行为吗? 我们只添加了对一个什么都不做的函数的调用,但现在程序不会崩溃。

为什么我们分别在整数除法中“浮动”?

例如: int number1 = 1, number2= 2; float variable = (float)number1/(float)number2; 而不是这个,为什么我们不能只使用“浮动”一次? 例如: int number1 = 1, number2= 2; float variable = (float)(number1/number2);

C-为什么char c = 129将转换为-127?

如果我们将+128分配给char变量,那么由于二进制等价( 10000000-first bit tells sign ),它被转换为-128 。 二进制当量为129是10000001 ,它将被转换为什么值? char c = 129; 谢谢,S

这里发生了什么? sizeof(short_int_variable + char_variable)

#include int main() { short int i = 20; char c = 97; printf(“%d, %d, %d\n”, sizeof(i), sizeof(c), sizeof(c + i)); return 0; } 有人可以告诉我当sizeof(a + b)“a是短int类型&b是char类型时会发生什么”输出是:2,1,4

初始化未初始化的值?

在C中,自动变量(如果未初始化)保存垃圾值。 但是,请考虑以下程序: int main(){ signed char term; (char)term–; printf(“%d\n”,term); } 它打印的值为’7’。 如果我不执行(char)term– ,则打印值为’8’。 所以,它绝对没有垃圾价值。 这不矛盾吗?

返回指向本地结构的指针

将指针返回到C中的本地结构是否安全? 我的意思是这样做 struct myStruct* GetStruct() { struct myStruct *str = (struct myStruct*)malloc(sizeof(struct myStruct)); //initialize struct members here return str; } 安全? 谢谢。

为什么返回指向局部变量或参数的指针是不好的做法?

我在学习指南中发现了这个问题,我不确定为什么返回指向局部变量/参数的指针会很糟糕。 有任何想法吗?

初始化标头中的静态变量

我是C语言编程的新手,所以我尝试了许多不同的东西来尝试并熟悉语言。 我写了以下内容: 文件q7a.h : static int err_code = 3; void printErrCode(void); 文件q7a.c : #include #include “q7a.h” void printErrCode(void) { printf (“%d\n”, err_code); } 文件q7main.c : #include “q7a.h” int main(void) { err_code = 5; printErrCode(); return 0; } 然后我在makefile中运行以下命令(我使用的是Linux操作系统) gcc –Wall –c q7a.c –o q7a.o gcc –Wall –c q7main.c –o q7main.o gcc q7main.o q7a.o –o q7 […]

如何将变量放在内存中的给定绝对地址(使用GCC)

RealView ARM C编译器支持使用at(address)的变量属性将变量放在给定的内存地址: int var __attribute__((at(0x40001000))); var = 4; // changes the memory located at 0x40001000 GCC是否具有类似的变量属性?

定义中函数标题后的C变量声明

在阅读一些FreeBSD源代码时(参见: radix.h第158-173行),我发现了定义中“函数标题”之后的变量声明。 这在ISO C(C99)中有效吗? 什么时候应该在生产代码中完成而不是仅仅在“函数标题”中声明变量? 为什么要在这里完成? 我指的是标题字符串的函数,如下所示: int someFunction(int i, int b) {