绝大多数C字符串操作事实上都使用的是指针,如下程序:
1 #include <stdio.h> 2 3 int main(void) 4 { 5 char *mesg = "Don't be a fool! "; 6 char *copy; 7 8 9 copy = mesg; 10 printf("mesg=%s,&mesg=0x%0x,value=0x%0x\n", 11 12 mesg,&mesg,mesg); 13 14 printf("copy=%s,©=0x%0x,copy=0x%0x", 15 copy,©,copy); 16 17 return 0; 18 }
编译运行:
分析:
输出第一项:mesg和copy以字符串形式%s输出,两个字符串都是“Don't be a fool!”
第二项是指针的地址
第三项是指针的值,指针的值是指针中存放的地址,mesg指向0x423ffc,copy也是如此。因此,字符串本身没有被复制,语句copy = mesg所做的事就是产生指向同一个字符串的第二个指针。显然,比起复制50个单个元素,复制一个地址更有效率。