为了账号安全,请及时绑定邮箱和手机立即绑定

指针变量存储的是地址,为什么在字符串定义的时候有"*p="computer""呢?

指针变量存储的是地址,为什么在字符串定义的时候有"*p="computer""呢?

慕慕森 2022-08-11 11:11:21
char a[10],*p=a;int n=0;scanf("%s",p);while(*p++)n++;printf(%d\n",n);循环中“*p++"判断真值为0时结束循环,但字符串中以'\0'为结束标志,‘\0'与真值0二进制的值不同,为什么上面的代码还对呢?
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

'\0'是个字符,它的ASCII码就是0

char *p="computer";在常量存储区申请一内存空间来存

储"computer"这个字符串,把内存首地址赋给p.

在这里p是在栈上申请的而"computer"是在常量存储区申

请的,还给你个例子:

char *p=new char[10];

这个是在堆上申请10个char大小的内存空间,把首地址赋

给p

char *p=(char *)mallo(sizeof(char);

这个是在自由存储区上申请10个char大小的内存空间,把

首地址赋给p

查看完整回答
反对 回复 2022-08-15
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

'\0'就是0,因为字符在存储的时候用的是ascii码.
#include <stdio.h>

void main()
{
char a[10],*p=a;
int n=0;
scanf("%s",p);
while(*p++)
n++;
printf("%d\n",n);
a[0]='a';
a[1]='b';
a[2]=0;
printf("%s\n",a);
}

*p="computer";
这个是把一个字符串常量赋值给一个指针,那个p指向的是一个常量.而不是指针存放的它.


查看完整回答
反对 回复 2022-08-15
  • 2 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信