zoukankan      html  css  js  c++  java
  • 到底使用字符数组还是字符串常量

    在c语言中有两种表示字符串的方法,一种是字符数组,一种是字符串常量

    在编程过程中如果只涉及到对字符串的读取,那么字符数组和字符串常量都能够满足要求;如果有写入(修改)操作,那么只能使用字符数组,不能使用字符串常量。

    字符串数组与字符串常量之间的区别:

    最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。
    下面的例子演示了如何输出这种字符串:

    1. #include <stdio.h>
    2. int main(){
    3. char *str = "http://c.biancheng.net";
    4. int len = strlen(str), i;
    5.  
    6. //直接输出字符串
    7. printf("%s ", str);
    8. //使用*(str+i)即为字符串数组
    9. for(i=0; i<len; i++){
    10. printf("%c", *(str+i));
    11. }
    12. printf(" ");
    13. //使用str[i]即为字符串常量
    14. for(i=0; i<len; i++){
    15. printf("%c", str[i]);
    16. }
    17. printf(" ");
    18.  
    19. return 0;
    20. }

      运行结果:
      http://c.biancheng.net
      http://c.biancheng.net
      http://c.biancheng.net
      获取用户输入的字符串就是一个典型的写入操作,只能使用字符数组,不能使用字符串常量,请看下面的代码:

    21. #include <stdio.h>
    22. int main(){
    23. char str[30];
    24. gets(str);
    25. printf("%s ", str);
    26.  
    27. return 0;
    28. }

      运行结果:
      C C++ Java Python JavaScript
      C C++ Java Python JavaScript

    一个行者的旅途
  • 相关阅读:
    Java MQTT 客户端之 Paho
    Spring Security + JJWT 实现 JWT 认证和授权
    MinIO
    Spring Boot 实现看门狗功能 (调用 Shell 脚本)
    Canal Admin
    canal
    浅尝 Elastic Stack (五) Logstash + Beats + Kafka
    养鸡场下蛋记
    涛声依旧
    原创:矩阵论学习心得
  • 原文地址:https://www.cnblogs.com/xinzghewanfu/p/5906329.html
Copyright © 2011-2022 走看看