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