Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74956
  • 博文数量: 26
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-19 08:55
文章分类

全部博文(26)

文章存档

2011年(1)

2009年(10)

2008年(15)

我的朋友
最近访客

分类: C/C++

2008-09-07 19:55:08

首先看2个表达式  
char str1[] = ...{’a’,’b’,’c’,’d’}; 
char *str2[] = ...{\"a\",\"b\",\"c\",\"d\"}; 
    这2个哥们儿长的很像,可实际的涵义确差老了。2个都是C里面的东东。 
    str1叫字符数组,首先它是一个数组,5个元素但长度为4 (加上个\\0)其实就相当于“abcd”。看看怎么变过来的: 
    首先变为char str1[ ] = {\"abcd\");然后把括号去掉就是 char str1[ ] = \"abcd\",和C++里面初始string对象一样 
    在C++里面你可以这么用 string s(str1)或string s = str1 就相当于string s(\"abcd\")对s进行初始化,反正就是一句话,可以把一个字符串数组看成一个字符串常量。另一种高级的玩法的是 
    string s(str1,hello + strlen(str1)) 要知道在C++里面数组的指针也就是str可以看成指向其本身的的迭代器。 
    str2 有点麻烦,两兄弟最不像的地方就是引号,一个单一个双。这就是关键了!!单表示字符,双表示字符串,字符串是什么,刚才已经说过了,它是数组。这下就哦了,不就是数组的数组么,说白了就是个2维数组,在白点就是一个指针的指针,所以可以用char** p指向它。

ps: 简单的理解就是 字符串=字符数组   ,  字符串数组=2维数组=指针的指针。
阅读(708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~