当前位置:   article > 正文

字符指针和字符数组的初始化_字符指针数组的初始化

字符指针数组的初始化

字符指针和字符数组的初始化

例如: char *p=“hello”;和char c[10]="hello"有什么区别呢?

字符串常量存储在数据区中的常量区,好处是相同的字符串,比如hello只会存储一遍,常量区的含义就是字符串本身是不可修改的,所以我们称之为字符串常量,hello存在字符串常量区,占用6个字节,有自己的首地址。

char *p="hello"是将字符串常量"hello"的首地址赋值给p
char c[10]=“hello”,字符数组c在栈空间有10个字节大小的空间,这个初始化是将字符串hello通过strcpy给字符数组c
因此我们可以将c[0]修改为H,而p[0]拿到的是常量区的空间,所以不可以修改。

#include <stdio.h>
#include <stdlib.h>

int main()
{
  //字符指针 指向常量区的首地址
	char *p="hello";
  //字符数组 等价于strcpy(c,"hello");
	char c[10]="hello";
	c[0]='H';
	//p[0]修改的是首地址,不可以
	// 字符串本身代表着地址
	printf("p=%s\n",p);
	printf("c=%s\n",c);
	system("pause");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/392602
推荐阅读
相关标签
  

闽ICP备14008679号