Tag: 变量

使用C中的另一个变量命名变量

我想创建一个包含2个变量的结构,例如 struct myStruct { char charVar; int intVar; }; 我将这些结构命名为: struct myStruct name1; struct myStruct name2; 等等 问题是,我不知道将输入多少变量,因此必须有无限的nameX结构。 那么,我如何用变量命名这些结构呢? 谢谢。

内存分配变量

我很困惑。 自动,静态和全局变量的分配是在编译时还是在运行时进行? 我知道的是,在编译时,源代码被转换为机器语言。 当编译器找到类似int a;的语句时int a; ,它写了指令。 在编译时是否会发生任何额外的事情,比如内存分配? 执行.exe文件时会发生什么? 计算机(OS)或编译器是否会在运行时或编译时分配足够的内存来保存整数。 还有人说全局变量的地址是编译时常量。 这是什么意思? 请帮助解决每个问题,尤其是最后一个问题。

全局变量是否比C中的局部变量快?

我对此有几点想法。 第一个是分配全局变量可能更快,因为它们在程序首次生成时只分配一次,而每次调用函数时都必须分配局部变量。 我的第二个想法是,由于局部变量在堆栈上,它们是通过基址指针寄存器访问的,因此每次访问局部变量时,必须递减存储在基址指针中的值。 全局变量可以通过数据段中的静态地址直接访问。 我的想法准确吗?

这种方式是否优先在c中交换两个没有temp的变量?

#include int main() { int a=20,b=30; a=a+b; b=ab; a=ab; return 0; } 我可以使用此程序交换正值和负值。

什么时候全局变量的初始化发生?

我知道程序运行时,首先执行main()函数。 但是什么时候在main()之外声明的全局变量的初始化发生了? 我的意思是如果我声明一个这样的变量: unsigned long current_time = millis(); void main() { while () { //some code using the current_time global variable } } 这里,全局变量初始化的确切时间很重要。 请告诉我在这种情况下会发生什么。

保证C数据类型的最小大小/范围

我找到了这个问题的不同答案,我知道必须有一个确定的答案。 C中四种主要数据类型的最小分配内存大小是多少? int , double , float和char是我的想法。 signed或未unsigned类型是否以任何方式改变大小?

安全处理字符串变量

你好,我对C很陌生,简而言之,我在课堂作业中做了以下工作: foo (char *var) { printf(var); } 我被告知这是不好的做法和不安全但我的导师没有得到关于此的详细信息。 我假设如果var的字符串值可由用户控制,它可能用于执行缓冲区溢出? 我如何正确强化此代码? 我是否必须限制str长度? 干杯谢谢!

C中自动和全局变量的初始化

如果我理解C中的全局变量(进入数据段)被初始化,其中自动变量(进入堆栈)不是。 或者反过来呢? 为什么会这样? 编译器没有初始化这两种变量的优点是什么? 它会提高速度吗?

是否可以使用for循环来更改C中的变量名?

这是一个通用的问题,因此我没有尝试进行故障排除的实际代码。 但我想知道的是,我可以使用for循环来更改C中变量的名称吗? 例如,如果我有part1 , part2 , part3 , part… ,作为我的变量名; 有没有办法将它附加到我的循环计数器,以便它会随着每次传递而递增? 我玩弄了一些东西,似乎没什么用。

无法在C中使用void变量进行编译

test.c的 int main () { void a; return 0; } 我使用gcc编译,但它给了我一个错误: 错误:变量或字段’a’声明为void 从我在这里读到的,我以为我可以毫无问题地声明void变量。