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. printf中%c和%C有什么区别?
- 3. NASM中的%define和equ有什么区别?
- 4. RequireJS中的define和require有什么区别?
- 5. C++中#import和#include有什么区别?
- 6. C#中CLR和DLR有什么区别?
- 7. 什么区别\\。\ C:和\\。\ C:\
- 8. 托管C++和C#有什么区别?
- 9. Managed C++和C++/CLI有什么区别?
- 10. \ c和\\ c有什么区别?
- 11. C++和C++ CLI有什么区别
- 12. Visual C++和C++有什么区别?
- 13. &c和* c声明有什么区别?
- 14. 有什么区别`和$(Bash中有什么区别?
- 15. SqlCeConnection和SqlConnection C#有什么区别?
- 16. C#Thread.Sleep()和threadreference.Join()有什么区别?
- 17. 'b'和'c'有什么区别?
- 18. C#.net和Visual Basic.net有什么区别?
- 19. GLSL和c有什么区别?
- 20. Objective-C和Cocoa有什么区别?
- 21. C#和.NET有什么区别?
- 22. Ctrl + C和Ctrl + [有什么区别?
- 23. #Define和Float的区别?
- 24. ==和===有什么区别?
- 25. ==和===有什么区别?
- 26. 有什么区别? :和||
- 27. ==和===有什么区别?
- 28. '=='和'==='有什么区别?
- 29. `&`和`ref`有什么区别?
- 30. 有什么区别:。!和:r!?
其中需要 – StoryTeller
整数表达式一个限定的预处理器的宏,而另一个限定了在任何情况下变量。预处理器宏用于*代替部分代码,并且仅用于编译时构造。变量作为程序中的实体存在,并且可以在运行时更改值。如果您需要一个指向变量的指针,则不能使用宏。预期编译时常量时不能使用变量。 –
在第一种情况下,LIMIT是一个常数。在编译之前它将被替换为100。你也可以写“const int LIMIT = 100;”声明一个常量 – imoutidi