码迷,mamicode.com
首页 > 其他好文 > 详细

char *s 与char s[]的区别

时间:2014-05-09 01:09:04      阅读:214      评论:0      收藏:0      [点我收藏+]

标签: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;
}

赋值上,可以这么使用s2 = s1, 但是不能s1 = s2,以为上面说过s1恒等于&s1[0]无法改变,所以不可以这么赋值。

也可以这么用s1[0] = ‘a‘,因为s1本身就是字符数组,可以更改其中的内容。

但是不可以s2[0] = ‘a‘, 因为s2指向一个字符串常量,不可以修改这个常量。


遍历字符串时,可以用*s2++,因为指针变量可以修改,但是不能这么*s1++遍历字符串,因为上面说了s1恒等于&s1[0],不可以修改。

大概就这么几个区别。

char *s 与char s[]的区别,布布扣,bubuko.com

char *s 与char s[]的区别

标签:style   blog   class   code   int   c   

原文地址:http://blog.csdn.net/pegasuswang_/article/details/25316499

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!