& str是什么意思?

时间:2015-07-02 18:24:55

标签: c string

我有3个疑惑

第一:

char str[25]="Catch";
printf("%d %s",&str,&str);

输出是什么? 在我看来,& str将给出字符串起始字符的内存地址,但是使用%s给出了字符串Catch作为输出?

第二

这句话是什么意思&"Hello"

第三

以下声明printf("%s",&str+n)会给我输出什么?

1 个答案:

答案 0 :(得分:0)

表达式&str将生成指向整个str数组的指针。该指针的类型为char (*)[25]。当然,它的数值将指向记忆中str的开头。

  1. printf("%d %s",&str,&str)。此printf调用的行为未定义。表达式&str的计算结果为char (*)[25]类型的值。格式说明符%d需要类型为int的参数。 %s说明符需要类型为char *的参数。将不正确(不兼容)类型的参数传递给printf会导致未定义的行为。

  2. &"Hello"不是"声明"。如果有的话,这是一个表达。在表达式&"Hello"中,运算符&应用于字符串文字"Hello",这是一个类型为char [6]的数组。结果是指向该数组的指针。它的类型为char (*)[6]

  3. printf("%s",&str+n)由于1中描述的原因触发了未定义的行为。