0
A
回答
1
第一个定义了一个preprocessor macro,在预处理过程中,它将在代码中的任何位置替换为它的值。
#define SIZE 4
int main() {
int matrix_1[SIZE][SIZE] = { 0 };
int* array = malloc(SIZE * sizeof(int));
/* ... */
}
SIZE
的值在运行时无法更改。预处理上面的代码将被更改为以下之后:
int main() {
int matrix_1[4][4] = { 0 };
int* array = malloc(4 * sizeof(int));
/* ... */
}
第二个初始化,这将在堆栈上分配的int
变量和可以修改它的工作时间。
int main() {
int size = 4;
size = 12; /* size in now 12 */
int* array = malloc(size * sizeof(int));
/* ... */
}
size
不能在需要整数常量的上下文中使用,例如,作为大小的比特字段的,作为一个恒定enum
的值,作为一个switch
语句的case
标签等
1
#define LIMIT 100
限定LIMIT
为整数常数而int LIMIT= 100;
它声明为整数变量。
相关问题
- 1. FunctionDefHelper :: Create和FunctionDefHelper :: Define有什么区别?
- 2. define('MENU_IS_ROOT',0x0001)和define('MENU_IS_ROOT',1)之间有什么区别?
- 3. printf中%c和%C有什么区别?
- 4. NASM中的%define和equ有什么区别?
- 5. RequireJS中的define和require有什么区别?
- 6. C++中fprintf和vfprintf有什么区别?
- 7. C++中0x和'\ x'有什么区别?
- 8. C#中CLR和DLR有什么区别?
- 9. C++中#import和#include有什么区别?
- 10. C#中ArrayList和Hashtable有什么区别?
- 11. 什么区别\\。\ C:和\\。\ C:\
- 12. char [] c和char c []有什么区别?
- 13. Managed C++和C++/CLI有什么区别?
- 14. Visual C++和C++有什么区别?
- 15. \ c和\\ c有什么区别?
- 16. c#和visual c#有什么区别?
- 17. 托管C++和C#有什么区别?
- 18. C++和C++ CLI有什么区别
- 19. (define(deriv-squared f)(proc(deriv f)))和(define deriv-squared(proc deriv))有什么区别?
- 20. 有什么区别`和$(Bash中有什么区别?
- 21. 有什么区别C#
- 22. SqlCeConnection和SqlConnection C#有什么区别?
- 23. Objective-C和Cocoa有什么区别?
- 24. Lua C API:lua_gettop()和-1有什么区别?
- 25. jni compile cpp和c有什么区别?
- 26. 'b'和'c'有什么区别?
- 27. Ctrl-C和SIGINT有什么区别?
- 28. C和%之间有什么区别?
- 29. Ctrl + C和Ctrl + [有什么区别?
- 30. C#和.NET有什么区别?
其中需要 – StoryTeller
整数表达式一个限定的预处理器的宏,而另一个限定了在任何情况下变量。预处理器宏用于*代替部分代码,并且仅用于编译时构造。变量作为程序中的实体存在,并且可以在运行时更改值。如果您需要一个指向变量的指针,则不能使用宏。预期编译时常量时不能使用变量。 –
在第一种情况下,LIMIT是一个常数。在编译之前它将被替换为100。你也可以写“const int LIMIT = 100;”声明一个常量 – imoutidi