相同点:
都是定义一个字符串
不同点:
1.含义上的区别
char str[] 是定义一个字符串数组,数组对应的是一块内存区域,而char *str 是定义一个指向字符串的指针,即指向一块内存区域。
数组的内存大小和其地址在作用域里是固定不变的,只有它存储的内容可以改变;而指针却不同,它指向的内存区域的大小随时可以改变,而且当指针指向常量字符串时,它指向的内容是不可以被修改的,否则在运行时会报错。
看一个例子:

#include<stdio.h>
#include<string.h>
int main()
{char str1[] = "Hello";char str2[] = "World";strcpy(str1,str2);printf("%s\n",str1);return 0;
}

上面这段代码是可以运行的,因为数组的内容是可以被修改的。
再看下面这段代码:

#include<stdio.h>
#include<string.h>
int main()
{char *str1 = "Hello";char *str2 = "World";strcpy(str1,str2);printf("%s\n",str1);return 0;
}

这段代码在编译时不会报错,但是在运行时结果会出错,原因在于这段代码企图修改 str1 的内容,由于 str1 和 str2 是指向常量字符串的指针,其内容是不可被修改的,所以在运行时会出错。
2.计算内存的区别
用 sizeof 可以直接计算出数组的字节数;而指针的大小只与编译器所处的平台有关,在32位平台上(例如X86)指针占4个字节,而在64位平台上(例如X64)指针占8个字节。
另外在进行参数传递时,数组会退化成为同类型的指针。

char *str 和 char str[] 的区别相关推荐

  1. char str[]与char *str的区别

    一个具体例子: main() {char *p="abc123ABC";//char p[]="abc123ABC"int i=0;while(*(p+i)!= ...

  2. char str[] 和 char *str 的区别

    char* get_str(void) { char str[] = {"abcd"}; return str; } char str[] = {"abcd"} ...

  3. const char *str,char const *str,char *const str的区别,及const详解

    c和c++中有三种定义: 1.const char *str, 2.char *const str, 3.char const *str. 现总结三者之间的区别: 一 char *const str ...

  4. C++中为什么str=new char[strlen(s)+1];中要加1

    为什么要使用 strlen(s) + 1? 在 C 语言中,字符串是以空字符做为终止标记(结束符)的.所以,C 语言字符串的最后一个字符一定是 \0.请确保所有的字符串都是按照这个约定来存储的,不然程 ...

  5. char s []和char * s有什么区别?

    在C语言中,可以在这样的声明中使用字符串文字: char s[] = "hello"; 或像这样: char *s = "hello"; 那么区别是什么呢? 我 ...

  6. char s[] 和 char *s 的区别

    第一种: char *a 与char a[] 的区别 char *d = "hello" 中的a是指向第一个字符'a'的一个指针:char s[20] = "hello& ...

  7. char[]:strlen和sizeof的区别

    C code: // char[]:strlen和sizeof的区别 #include <stdio.h> #include <string.h> int main(int a ...

  8. char *s和char s[]的区别与联系以及strlen()和sizeof()的用法

    #include<iostream> using namespace std;void reverse(char s[]) {char *p, *q, temp;p = s;//p指向字符 ...

  9. C语言中 char s[] 和 char* s 的区别

    char s[] 和 char* s 的区别 1.数组本质 2.指针 指针的指向 3.字符数组 4.char * 与 char a[ ] 5.char ** 和char *a[] char *a[] ...

最新文章

  1. linux添加美式键盘,win8\win server 2012添加【中文--美式键盘】
  2. gradle不能下载最新依赖包问题
  3. 机器学习之乳腺癌问题(SVM)
  4. pcl_openmap_OpenMap教程3 –使用MapHandler构建基本的地图应用程序–第2部分
  5. TPS、QPS、系统吞吐量、并发用户数区别及性能术语的理解
  6. python内容目标_python抓取一个页面的目标网址,然后抓取目标网址里的内容
  7. THREEJS基础入门
  8. matlab中制作软件,如何用matlab制作一个小软件
  9. IAR编译器问题的总结
  10. 京东数科发布《京东区块链技术实践白皮书2020》(附白皮书下载链接)
  11. SEGGER 的硬件异常 分析
  12. 线性回归中的交互效应(interaction)
  13. 同一台电脑安装两个版本的jdk和jre
  14. Macmini 2018安装 ArchLinux
  15. python 经典ppt_Python讲解ppt
  16. [pyecharts学习笔记]——页面组件 Page(顺序多图,将多个图将汇总到一个页面)
  17. there is no statement named xxx in this SqlMap
  18. 百度指数爬虫城市对应代码
  19. 排名:百度小程序 微信 + 支付宝 + 百度 + 头条 商城源码-拓客营销
  20. 模型动态测试工具 TPT 18 新版本上线,助力测试效率更快一步

热门文章

  1. k8s集群部署springboot项目
  2. 2023计算机CCF A类会议期刊截稿日期
  3. mysql分布式事务wcf_[转载]WCF系列_分布式事务(下)
  4. 多多情报通:拼多多发布机会商品是谁发货?该怎么发货?
  5. 服务压测发现怪异现象,一顿排查,揪出“TIME_WAIT”这个内鬼~
  6. 高清摄像头MIPI CSI2接口浅解【转】
  7. Leetcode面试题 10.01. 合并排序的数组(C语言)
  8. 人工智能之python打卡学习100天计划-day11
  9. 云计算介绍,让你更了解云计算
  10. Vue3项目引入 vue-quill 编辑器组件并封装使用