在函数中作为参数传递时,字符串文字参数如何解释?

时间:2015-08-20 08:25:29

标签: c

我需要帮助来掌握一些东西。目前我正在微控制器平台上测试代码,内存很少(ROM(FLASH),RAM)。 这是代码

void print(const char * c)
{
   printf("%#4x, ",c);
   printf("%s\n",c);
}

这是函数调用

print("Riko");

输出为: 0x5C4C,Riko

内存地址0x5C4C驻留在FLASH(MAIN CODE MEMORY)中,因此文字字符串"Riko"也必须驻留在该内存段中?我的问题是:当我们将"Riko"作为参数传递给函数print时,它实际上是否意味着我们传递了字符串"Riko"((const char*) 0x5C4C)的第一个字符的地址作为函数print的参数?非常感谢...

2 个答案:

答案 0 :(得分:4)

  

在作为函数打印的参数传递“Riko”的时候,做   实际上意味着我们传递了第一个字符的地址   字符串“Riko”

是的,这意味着,对于打印地址,您应该使用:

{{1}}

答案 1 :(得分:0)

是。根据{{​​3}} ...

  

除非它是sizeof运算符,_Alignof运算符或一元&运算符的操作数。 operator,或者是一个用于初始化数组的字符串文字,一个类型为''类型'''转换为类型为''指向类型''的指针。它指向数组对象的初始元素,而不是左值。