标签:style blog class code int c
可能有些人不会注意二者的区别,举几个例子说明下。
char s1[] = "hello"; //定义一个字符数组
char *s2 = "hello"; //定义一个指向字符串常量"hello"的指针
在这里,s1 = &s1[0], s1是个”常量",始终等于&s1[0],无法更改。s2是个指针变量。
#include <iostream> #include <cstdio> using namespace std; int main() { char s1[] = "hello"; char *s2 = "hello"; cout << sizeof(s1) << endl; //输出6,表示数组s1所占的字节 cout << sizeof(s2) << endl; //输出4,表示指针变量s2是4个字节 return 0; }
也可以这么用s1[0] = ‘a‘,因为s1本身就是字符数组,可以更改其中的内容。
但是不可以s2[0] = ‘a‘, 因为s2指向一个字符串常量,不可以修改这个常量。
遍历字符串时,可以用*s2++,因为指针变量可以修改,但是不能这么*s1++遍历字符串,因为上面说了s1恒等于&s1[0],不可以修改。
大概就这么几个区别。
char *s 与char s[]的区别,布布扣,bubuko.com
标签:style blog class code int c
原文地址:http://blog.csdn.net/pegasuswang_/article/details/25316499