C语言中字符数组和字符串指针的区别

代码:

#include<stdio.h>

int main(){
    char * a = "qwer";
    char b[] = "qwer";
    printf("size of a is: %d\n",sizeof(a));
    printf("size of b is: %d\n",sizeof(b));
    return 0;
}

输出:

解释:

1.字符串指针

  • 存储在常量区
  • a只是一个char类型的指针,指向“qwer”的第一个
  • 能够用下标a[i]去访问qwer其中的一个,也能用*(a+n)去访问字符
  • 不能修改其中的单个字符,只能整体修改
  • sizeof(a)只能表示指针的大小,不能表示"qwer"占用的内存的大小

2.字符数组

  • 存储在全局数据区或栈区
  • b是一个数组,里面存储了"qwer",大小为4+1,其中的1代表'\0'
  • 能够通过下标b[i]去修改"qwer"其中的某个字符,也能用*(b+n)去访问字符
  • 字符数组最后一个一定是'\0',而其他类型的数组没有,比如char a1[] ='a';中printf(“%d”,sizeof(a1));的输出为2,因为a1中的'a'后面会自动加上一个'\0'
posted @   猪猪猪猪侠  阅读(182)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示