字符指针数组的初始化步骤_字符指针数组的初始化步骤是

字符指针数组的初始化步骤_字符指针数组的初始化步骤是王道笔记C-day21-字符指针与字符数组的初始化回顾上节课内容:虽然前面,讲了很多的一级指针但是我们练习的场景,指针与后++的关系。还有指针要申请空间,申请空间,就是在堆空间申请偏移,来放置数据。当我们讲排序的时候,我们就会使用malloc来申请堆空间,然后放入整数。puts(c)与puts(p

王道笔记C-day21-字符指针与字符数组的初始化
  回顾上节课内容:字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  虽然前面,讲了很多的一级指针

  但是我们练习的场景,指针与后++的关系。

  还有指针要申请空间,申请空间,就是在堆空间申请偏移,来放置数据。字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  当我们讲排序的时候,我们就会使用malloc来申请堆空间,然后放入整数。字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  puts(c)与puts(p)都可以打hello,那么这两种方式,到底有什么区别呢。字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  请看原理,在看场景。

  根据原理,你来看场景,能不能做?

  关键我们不仅仅是初始化

  如果char *p=hello  ,p是一个指针变量。

  此时它只有4个字节,

  原理:

  字符串常量区有一个hello的字符串,

  它有一个地址,它的h有起始地址。

  这里是我们的数据段,数据段有字符串常量区,就叫常量区。

  p里面存4个字节,实际上这四个字节存储的就是hello的起始地址,

  接着你又定义了C[10],它是要占10个字节空间的。字符指针数组的初始化步骤_字符指针数组的初始化步骤是你把hello这样给C[10]这样与刚才char*p的作用在于。

  strcpy()它把Hello的五个字符呢,依次赋值到栈空间里边。

  也就是说,c里边,已经存储了这一份hello了。

  那我们都知道栈空间是不是可读可写的。

  这是你的数组,这个时候你可以改变

  接下来做两件事情。

  我想把C[0]改成大写的H字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是p的地址指向的都是字符串常量区。字符串hello不应该是六个字节么,这里怎么有有个00是空着的?字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  对齐,结构体会说。字符指针数组的初始化步骤_字符指针数组的初始化步骤是C[0]已经是大写的H了,大写的hello了。&c这里是我们的栈空间。

  而且P和C距离很近的。字符指针数组的初始化步骤_字符指针数组的初始化步骤是字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  因为他指向的都是字符串常量,所以每一个都不可以改。字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  p所指向的是字符串常量区

  那么字符串常量区,每一个都是不可以更改的。

  hello在这里的字符串常量区,是只有一份的    字符指针数组的初始化步骤_字符指针数组的初始化步骤是虽然主函数存在两个字符串常量hello,一个是char*p  一个是c[10]。但是你编译的时候,字符串常量区,却是只有一份hello。这就是为什么字符串都要放在字符串常量区的好处。它不会有多份的。字符指针数组的初始化步骤_字符指针数组的初始化步骤是这个位置不可以写,固定的。

  为什么不可写?

  其实你在编译的时候,每个地方替换成hello,实际上是把地址给它字符指针数组的初始化步骤_字符指针数组的初始化步骤是在初始化的时候,相当于进行了 strcpy字符指针数组的初始化步骤_字符指针数组的初始化步骤是strcpy所要传递的类型,就是字符指针。它是把首地址给你了。你在任何地方写字符串,那都是把首地址给了过去。字符指针数组的初始化步骤_字符指针数组的初始化步骤是一旦变化,那么谁在拿首地址,在来访问字符串常量的时候,就不符合预期了。

  字符指针数组的初始化步骤_字符指针数组的初始化步骤是F10字符指针数组的初始化步骤_字符指针数组的初始化步骤是写入发生冲突,就是没有写的权限。这个是不合法的。

  所以这就是两种初始化是有区别的。字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  第二件事

  我们知道,原来P指向hello,那么现在我想让P指向word.

  现在又想让C也是word。字符指针数组的初始化步骤_字符指针数组的初始化步骤是编译不通字符指针数组的初始化步骤_字符指针数组的初始化步骤是左操作数,必须为左值。左操作数是不可以修改的,它左边是存储的一个位地址的常量。你可以理解它为地址常量。但是我们的p就可以,因为我们的world.虽然它也是在字符串常量区。刚才说了,任何一个字符串常量,放在这里,它都是一个地址。这个地址是可以赋值给指针变量的。因为指针变量是可以存储hello的地址。它也可以存world的地址。它可以换,所以这个时候,它就可以改变。而C这里就不行。

  字符指针和字符数组,它的初始化,是有区别的。你什么时候用什么,依赖于你的需求。字符指针数组的初始化步骤_字符指针数组的初始化步骤是

  比如,你想做的是,我一开始想去指向的是一个字符串,后来,我又想指向,另外的字符串,  你是字符串之间的不停打印,那么你就用字符指针。这个时候,是不能用字符数组的。

  但是如果你是想用,存下的字符串,你把字符串里的每一个字符。要进行修改,处理,那这个时候,肯定不能用字符指针了,那么你字符指针指向的是常量区,那肯定不行。除非你字符指针,你所指向的不是字符串常量区。比如,我们定义一个字符指针。让它直接等于c

  这个时候是可以的。它可以进行偏移的去访问,数组的元素是可以修改的。

  以上为字符数组的初始化,和字符指针的初始化。字符指针数组的初始化步骤_字符指针数组的初始化步骤是一个是指向hello,一个是存储了hello。一个hello在栈,一个hello在数据段。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/97895.html

(0)
上一篇 2024年 5月 20日 下午1:28
下一篇 2024年 5月 20日 下午1:42

相关推荐

关注微信