Tag: 变量

C中的变量名

在预处理器中,我们可以在宏之间切换,如 #define BUFF(n) BUFF_##n 因此,BUFF(1)将被BUFF_1取代,BUFF(2)将被BUFF_2和歌曲取代 这可以适用于C变量吗? 即动态选择相似的变量。 我知道这是一个奇怪的情况,可以使用数组或任何其他结构来处理..但情况要求我这样的情况..你可以帮助这个..请提前感谢

C – 由变量定义的长度的静态数组

我实际上正在使用C语言进行分配,为了实现我的需要,我需要使用一个静态数组,让我们说 static int array[LEN]; 诀窍是这个数组长度LEN是在main()计算的。 例如 static int LEN; void initLen(int len) { LEN = len; } static int array[LEN]; 在initLen中调用initLen ,并使用用户给出的参数计算len 。 这个设计的问题是我得到了错误 threadpool.c:84: error: variably modified ‘isdone’ at file scope 该错误是由于我们无法使用变量作为长度初始化静态数组。 为了使它工作,我正在定义一个LEN_MAX并写 #define LEN_MAX 2400 static int array[LEN_MAX] 这个设计的问题是我暴露自己的缓冲区溢出和segfaults 🙁 所以我想知道是否有一些优雅的方法来初始化一个具有确切长度LEN的静态数组? 先感谢您!

如何返回变量名并指定c中返回的变量的值

我想使用一个动态变量,其值在运行时会发生变化。 例如 char * aVar = “ABC”; char * bVar = “DEF”; char * cVar = “XYZ”; char *dVar = NULL; dVar = foo1(); print dVar; foo1内部调用foo2 ,它应返回变量名称(如”aVar” , “bVar”或”cVar” )。 foo1应该返回根据foo2的返回值命名的所述变量的值。 获取变量名称我们可以使用(非标准)宏: ##define GET_VAR(varname) #varname; …但是我如何才能获得名为变量的值?

C预处理器与变量串联

可能重复: C预处理器和连接 是否可以将C预处理器与变量名连接? #define WIDTH 32 int dataWIDTH; // dataWIDTH should be interpreted as ‘data32’ printf(“%d”,dataWIDTH);

C中的可变替换

我想打开一个文件。 很容易。 使用fopen()。 但是,要打开的文件取决于用户输入。 我有点精通Korn Shell脚本,这很容易使用变量替换:$(var)。 我无法在C中找出正确的格式。有人可以给我一些见解吗? 我的代码 – #include #include char statsA[100]; char fileA[50]; int main (void) { printf(“Enter file to open\n”); gets(fileA); FILE *statsA; statsA = fopen(“c:/Users/SeanA/C/******”, “r+”); …………………………………^ What goes here? 我不确定如何在fopen字符串中包含用户输入。

这是正确的C声明吗? 如果是这样,为什么它不起作用?

我正在编写一本教程书中的演示程序,用于教授Unix和Windows的“C”。 但是,有时我会遇到一些代码,当完全输入时,它不想工作。 例如。 #include int main() { /*This next line is the error */ int num = 2, bool = 0; if ( (num==2) && (!bool) ) { printf(“The first test is untrue\n”); } else if( (num==2) && (!bool) ) { printf(“The second test is true\n”); } else if( (num==2) && (bool==0) ) { printf(“The […]

堆栈中的变量顺序(GCC)

在GCC中编译C代码时,是否有任何方法可以保证堆栈变量按照我声明的顺序出现在堆栈中(或者按相反的顺序,对我来说无关紧要)? 我知道这可能是通过结构,但我宁愿不使用它们。

如何将全局值从C传递给LUA?

最近我在我的C应用程序中嵌入了LUA,我现在要做的是我有一个值(Session_ID)我想从C函数传递给LUA脚本,以便LUA脚本可以使用它来调用一个函数回到C. 我在C中加载LUA脚本并运行它(使用lua_pcall)没有问题,我也没有问题从LUA内部调用C函数,我当前的问题是来回传递全局变量。 例如: 在C侧(test.c): session_id = 1; luabc_sz = rlen; result = lua_load(L, luaByteCodeReader, file, “script”, “bt”); if( lua_pcall(L, 0, 0, 0) != 0 ) 其中file是包含LUA脚本(script.lua)的数组。 在Lua side script.lua): print “Start” for i=1,10 do print(i, **session_id**) end print “End” “print”被我自己的函数覆盖,我想将session_id传递给它。 所以完整的场景是我在c函数中有session_id ,我想传递给LUA脚本,稍后将使用它来调用用C编写的print函数。 有任何帮助:)?

声明变量堆栈

我有2个文件名为auth_overflow&auth_overflow2,唯一的区别是变量声明的序列。 我的问题是,声明序列是否会根据FILO影响它们的堆栈序列(先排在后面)? auth_overflow bash-4.2$ gdb -q auth_overflow Reading symbols from /home/reader/hacking/auth_overflow…done. (gdb) list 5 int check_authetication (char *password) { 6 int auth_flag = 0; 7 char password_buffer[16]; 8 9 strcpy(password_buffer, password); (gdb) break 9 Breakpoint 1 at 0x804850d: file auth_overflow.c, line 9. (gdb) run AAAAAAAAAAAA Starting program: /home/reader/hacking/auth_overflow AAAAAAAAAAAA Breakpoint 1, check_authetication (password=0xbffff7f3 ‘A’ ) […]

在这段代码中哪些可变部分存储到堆栈中?

我有以下代码,我真的不明白test_function中的哪些变量部分存储在堆栈段中? 在书中它说“这些变量的内存在堆栈段中”,所以我认为它是变量实际初始化为一个值的时候。 对? void test_function(int a, int b, int c, int d) { int flag; //is it this char buffer[10];// and this //or flag = 31337; //this and buffer[0] = ‘A’; //this. Or all of it? } int main() { test_function(1, 2, 3, 4); }