zoukankan      html  css  js  c++  java
  • char s[]字串和char *s字串有什麼区别?

    C語言有兩種字串宣告方式char s[]和char *s,兩者有什麼差異呢?

    Introduction

    char s[] = "Hello World"; (只是用字符串常量初始化)
    char *s  = "Hello World";


    皆宣告了s字串,在C-style string的函數皆可使用,但兩者背後意義卻不相同。

    char s[] = "Hello World";


    的s是個char array,含12個byte(包含結尾),"Hello World"對s來說是initializer,將字元一個一個地copy進s陣列

    char *s = "Hello World";


    的s是一個pointer指向char,由於"Hello World"本身就是一個string literal,所以s指向"Hello World"這個string literal的起始記憶體位置。

    #include <iostream>
     2
     3using namespace std;
     4
     5int main() {
     6 char s1[] = "Hello World";
     7 char *s2  = "Hello World";
     8 
     9 cout << "size of s1: " << sizeof(s1) << endl;
    10 cout << "size of s2: " << sizeof(s2) << endl;
    11}

    size of s1: 12
    size of s2: 
    4

    还有很重要的一点,char *s是字符串常量,不能更改.如果*s='a'会报错。静态数据区存放的是全局变量和静态变量,从这一点上来说,字符串常量又可以称之为一个无名的静态变量,

    memset(s,'a',20)会报错。

    char 【】就可以。分配在stack去。

  • 相关阅读:
    Hello World基于.net framework中CLR的执行
    MVN常用命令
    Git常用命令
    Markdown常用语法
    计算机专用英语词汇
    Windows DiskPart
    字符集过滤器
    SSHkey
    书名
    redis
  • 原文地址:https://www.cnblogs.com/youxin/p/3226844.html
Copyright © 2011-2022 走看看