我正在使用Microchip PIC32微控制器的xc32编译器。
程序存储器大小(用于启动、向量等)为1656字节。
#include <plib.h>
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
//if I use const char array[] for string literal then the size of the program memory increased
//equal to the string length(only 12 bytes)
//const char array[] = "Hello World"; //program mem size(1668 0x684) bytes
//but in this case size increased 28 bytes
//const char *array = "Hello World"; //program mem size(1684 0x694) bytes
int main {
while(1);
}
为了优化目的:
哪一个更好(速度和大小都考虑)?
- #define STRLIT "HELLO WORLD"
- const char *strlit = "HELLO WORLD";
- const char arr[] = "HELLO WORLD"
const char *array
需要分别存储一个指针(8字节,为了对齐分配了16字节的空间)和字符串。第一个版本(数组)只需要存储字符串。这是由于它们声明的方式不同。const char array[] = "..."
意味着字符串需要被存储。const char *array
意味着字符串需要被存储,需要有一个全局指针,并且该指针需要指向字符串。 - TSG