• 售前

  • 售后

热门帖子
入门百科

这篇文章大概是你最等候的高级指针话题

[复制链接]
贺老师 显示全部楼层 发表于 2022-1-16 12:46:25 |阅读模式 打印 上一主题 下一主题
待更新中.............

字符指针

   字符指针:指向字符型数据的指针变量。每个字符串在内存中都占用一段一连的存储空间,并有唯一确定的首所在。即将字符串的首所在赋值给字符指针,可让字符指针指向一个字符串。
  存放字符的字符指针

  1. #include<stdio.h>
  2. int main()
  3. {
  4.         char ch = 'w';//(1)
  5.         char* pc = &ch;//(2)
  6.         *pc = 'w';//(3)
  7.         return 0;
  8. }
复制代码


  • 1):开发char范例变量为ch内存空间存放一个字符w;
  • 2):将字符w所在存放在指针变量pc中(此时pc就是存放字符的指针也叫作字符指针)
  • 3):pc解引用找到字符w

存放字符串的字符指针

  1. int main()
  2. {
  3.    char* p = "hello world";//存放字符串的字符指针
  4.    printf("%s\n", p);
  5.    return 0;
  6. }
复制代码


  •       这里是把一个字符串放到pstr指针变量里了吗?
答案是否定的。(字符串的指针):当一个字符串常量出如今表达式中时,它的值是个指针常量。编译器把这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针。


  • 为啥是指向第一个字符的指针呢?、
由于"hello,bit"这里是一个字符串常量是存在只读存储区的,所在存在于在历程的 text 段,text 段除了生存常量还生存可实行代码,因此是不答应可写权限的,而是只答应可读可实行权限,内容不可改,以是,当指针指向这个字符串的时间,它指向的是字符串的首字符的所在,也就是第一个字符的所在。详细写这一行代码正确写法应该是:const char*p = "hello,world";(也恰恰符合了指针指向的内容不可以改变)。



  • 举个小例子来简单明白上面内容(这里是c和指针这本书的内容)

"xyz"+1,这个意思指针指向的是第一个字符的所在,加上1就是下一个字符的所在也就是y
*("xyz")指针指向的是第一个字符的所在解引用就是第一个字符也就是x
"xyz"[2]这个就是指向下标为2的字符也就是z
字符串的指针与字符数组比力

   字符数组:当数组名用于表达式中时,它们的值也是个指针常量。我们可以对它们举行下标引用、间接访问以及指针运算。
  1. int main()
  2. {
  3.    char p[] = "hello world";//存放字符串的字符数组
  4.    return 0;
  5. }
复制代码
全部char字符都一连的存放在栈区。内容可更改!(也就是数组是存放在栈区上的而与字符串指针不一样它是存放在制度存储区的内容不可改)。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作