Tag: 全局

C中的全局指针?

我知道指针通常在声明时分配,但我想知道是否有任何方法可以在C中创建一个全局指针。例如我的代码如下:这是一个好习惯吗? static int *number_args = NULL; void pro_init(int number) { number_args = &number; /* initialize the pointer value — is this okay? */ }

我需要在C中创建一个全局数组,其大小由用户输入

基本上我需要在C中创建一个数组的全局变量。 数组将为[n] [22] [n + 1],其中n为3,4,5或6,由用户选择。 有没有办法做到这一点,或者我应该只做数组[6] [22] [7],并且处理它的函数只使用最多n的部分(如果这有意义)? 我之前必须要做一个计算机科学课,但不记得究竟该怎么做。

不使用#define的全局常量

好吧,我正在寻找一组内存地址作为.h文件中的常量,这些常量由一堆.c文件使用(我们在C中,而不是C ++)。 我希望能够看到变量的名称 ,而不是只看到调试器中的hex地址…所以我想将我当前拥有的#defines转换为全局范围的常量。 问题是,如果我这样定义它们: const short int SOME_ADDRESS = 0x0010 然后我得到了可怕的“多声明”错误,因为我有多个.c文件使用相同的.h。 我想使用枚举,但是这不起作用,因为它默认为整数(在我的系统上是16位……我需要对类型有更好的控制)。 我想把所有的地址都放在一个结构中…但我没有办法(我知道)在头文件中设置结构实例的默认值(我不想假设一个特定的.c文件首先使用结构并在其他地方填充它。我真的想在.h文件中定义常量) 我开始时看起来很简单,但是我没有看到在头文件中定义全局可用的short int常量的好方法……任何人都知道这样做的方法吗? 谢谢!

Calloc用于C中具有负索引的数组数组

我有一个带负索引的数组数组。 它是一个具有实际尺寸[dim_y + 40] [dim_x + 40]的数组,但是用户使用的数据类似于维度[dim_y] [dim_x]。 首先,我有全局,已经定义了维度dim_x,dim_y,所以我有这个 int map_boundaries[dim_y + 40][dim_x + 40]; int (*map)[dim_x+40] = (int(*)[dim_x+40])&map_boundaries[20][20]; 它工作正常。 现在我需要维度dim_y和dim_x是可变的,这意味着我希望数组’map’没有固定大小但是动态,我需要从用户读取dim_y,dim_x和数组’map’是全球性的,所以我有 int **map_boundaries; 我在main()使用calloc map_boundaries = (int **)calloc(dim_y + 40,sizeof(int*)); for(i = 0; i < dim_y + 40; i++){ map_boundaries[i] = (int *)calloc(dim_x + 40,sizeof(int)); } ,但我不知道如何申报第二行 为了更好地理解边界,我在第2条评论中发布了这些内容: http : //everything2.com/title/Negative+array+indexing

如何在程序开始时声明

在下面的清单中,尝试在调用main()函数之前声明矩形“r”会导致错误。 error: ‘r’ does not name a type rx = 150; 为什么必须在main()之后声明“r”? #include int main (int argc, char** argv) { // Creat a rect at pos ( 50, 50 ) that’s 50 pixels wide and 50 pixels high. SDL_Rect r; rx = 150; ry = 150; rw = 200; rh = 100; SDL_Window* window = […]

没有维度的全局整数数组

当我们定义没有维度的全局数组时,这个概念是什么?这表示输出为16。 #include #include int arr[]; int main(int argc, char *argv[]) { arr[1] = 16; printf(“%d\n”,arr[1]); system(“PAUSE”); return 0; } 甚至sizeof(arr)都不起作用。 为什么?

C指针与结构的直接成员访问

假设我有一个类似以下的结构…… typedef struct { int WheelCount; double MaxSpeed; } Vehicle; …我有一个这种类型的全局变量(我很清楚全局变量的缺陷,这是一个嵌入式系统,我没有设计,为此他们是一个不幸但必要的邪恶。 )直接或通过指针访问结构的成员是否更快? 即 double LocalSpeed = MyGlobal.MaxSpeed; 要么 double LocalSpeed = pMyGlobal->MaxSpeed; 我的任务之一是简化和修复最近inheritance的嵌入式系统。

静态全局变量和静态volatile变量之间有什么区别?

我在文件范围中使用了静态全局变量和静态volatile变量, 两者都由ISR和主循环更新,主循环检查变量的值。 在优化过程中,全局变量和volatile变量都不会被优化。 因此,全局变量不是使用volatile变量,而是解决问题。 那么使用全局变量而不是volatile是好的吗? 使用静态volatile的任何具体原因?? 任何示例程序都是可观的。 提前致谢..

从C中的另一个文件访问全局静态变量

在C语言中,我想访问文件范围之外的全局静态变量。 让我知道最好的方法。 其中一种方法是为外部全局变量赋值静态变量的值, 在档案中 static int val = 10; globalvar = val; 在文件bc中 extern globalvar; 但在这种情况下,val(文件ac)中的任何更改都不会在(文件bc)中的globalvar中更新。 请让我知道如何实现同样的目标。 谢谢,Sikandar。