const ACIGA_CHAR *aciga_device_frimware_version_get( ACIGA_VOID ) { return ACIGA_APP_VERSION_FIRMWARE; }为什么这里使用的是指针定义
时间: 2023-09-03 13:17:04 浏览: 79
再论指针 调用如果传递的是指针参数
这里使用指针的原因是函数返回的是一个字符串常量(ACIGA_APP_VERSION_FIRMWARE),该字符串常量是存储在程序的常量区中的,而不是存储在栈或堆中的。因此,如果直接将该字符串常量作为函数的返回值,会导致该字符串常量被释放或修改,从而导致程序错误。
使用指针可以解决这个问题,指针变量存储的是该字符串常量的地址,而不是该字符串常量本身。因此,即使函数执行完毕,该字符串常量仍然存在于常量区中,可以安全地使用该指针变量来访问该字符串常量。同时,由于该指针变量指向的是常量区,因此也可以使用 const 修饰符来确保该指针变量不会被用于修改该字符串常量。
阅读全文