有关能够退化成指针的数据的总结:
(342/751)用双引号括起来的内容被视为指向该字符串存储位置的指针,这类似于把数组名作为指向该数组位置的指针,如下例:
int main()
{
printf("%s, %p,%c\n","we", "are", *"heros");//printf()根据%s转换说明,打印we,
//根据%p说明,打印地址;如果"are"代表一个地址,
system("pause"); ///那么printf()将打印该字符串首字节地址
return 0; //*“heros”表示该字符串所指向地址上所存储的值
}//输出:we,00BD6B38,h //就是字符串"heros"的首字节
359/751
// zifuchuan358of751.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#define DEF "I am aboy."
int main()
{
char str1[80] = "an array was me.";
const char *str2 = "A pointer was to me.";
puts("I'm a boy.");
puts(DEF);
puts(str1);
puts(str2);
puts(&str1[5]);
puts(str2 + 4);
system("pause");
return 0;
}//输出:
I'm a boy.
I am a boy.
an array was me.
A pointer wasto me.
ray was me.
inter was to me.
//每一个字符串独占一行,puts()在显示字符串时,会自动在末尾添加一个换行符号(这是与printf的区别)
//该例子再次说明了用双引号括起来的内容是字符串常量,且被视为该字符串的地址。另外,存储字符串的数组名
//也被看做是地址,在第五个puts()调用中,表达式&str1[5]是str1数组的第六个元素r,put从该元素开始输出。
//与此类似,第六个puts()调用中,str2+4指向储存"pointer"中i的存储单元,puts()从这里开始输出。
//puts()函数遇到空字符('\0')时才停止输出,所以要确保有空字符。下面一个例子要注意:
//chardont[]={"w","0","w","!"};
//puts(dont);/*dont不是一个字符串,一般字符串后面有一个'\0'