char * a=“hello” ; a是一个char类型的指针,指向第一个字符‘h’。不解引用时,printf(“%s”,a)输入一串字符,解引用时输入一个字符。
而能把字符串赋值给指针时因为对于字符串常量,编译器都是默认按其大小分配内存存放字符串,并把地址首地址赋值指针变量。
如:
char *p="hello world";
其实编译的时候等于:
const char str[] = "hello world";
char *p = str; // 数组的首地址。
char * argv[]; argv是一个字符指针的数组,数组的元素是地址(指针)。该指针指向一个字符串的第一个字符。
string 是一个容器,已经封装好的类。使用方便但是内存消耗大。