这个C++程序中 p[0] 和 *p的输出结果都是这个字符串的首字母?

这个C++程序中 p[0] 和 *p的输出结果都是这个字符串的首字母?,第1张

在c/c++语言里"[]"实际上是偏移操作符,p[0]的意思就是读取相对于地址p偏移了0个单位的地址里的数据,所以p[0],p[1]甚至p[-2]都可以 p[0]就是(p+0)就是p, p[1]就是(p+1),p[-2]就是(p-2);

至于cout<<p; 这是c++里<<重载后定义的:如果<<的参数是个char类型的地址,那就从这个地址开始读取内容直到碰到0为止,而不想其他类型的地址是输出地址本身,所以如果想输出一个char类型的地址,可以转换一下

比如 cout<<(int)p<<endl; //这样就输出地制值,而不是字符串内容了

第一个"p对应的字符是数字0~9"可以用下面语句来表示:

char p,a;

a=1;

p=&a;

现在p是一个指针,它所指向的是变量a,a的值为字符1,那么就应了第一句话;

第二个"p是数字字符0~9"也可以用下面的语句来表示:

char p;

p=1;

现在p是一个字符变量,也应了第二句话

p!=0的意思是

p≠0

一般用作判断语句中

例如if(p!=0)

return

1;

else

return

0;

当p=0是条件为假执行return

0;

当p≠0时条件为真

执行return

1;

p=!0的含义

!是

取反

逻辑运算符

!0

=

1

所以

p

=

1;

!x(x≠0)

=

0

可以推出

p

=

!1

=

!2

=

!3

=

!x

=

0;

NULL ,0,'\0',这几种写法一样,值都是0

在很多编译器中#define NULL 0这样宏定义的都是给p的值赋值0,'\0'就是0,不过是以字符的形式,

因此他们是相同的

有p=NULL,p = 0,p = '\0‘,这样的写法,不过他们的意思是说,给p这个指针指向的空间赋值为0

但是,不要先把p赋值为0,然后这样写,因为大多数编译器规定,内存为0的地方不能写操作,这是为了保护这个内存空间,因此只要不写在一块,都可以

这样写:

file1c

#include<stdioh>

void main()

{

int p = &i;

p = NULL;

p = 0;

p = '\0'

}

file2c

#include<stdioh>

void main()

{

int i = 23;

int p = &i;

p = NULL;

p = 0;

p = '\0';

}

生死线上拉下来的病人,而一谈及他的家人,他便潸然泪下,他的妻子和女儿全部都压在他面前的废墟中这是何等的割舍,何等的爱呀!一名十二岁的小男孩,在从废墟中逃出来后,年幼的他失去挚爱的双亲,只有一个妹妹与他相依为命,为了不让妹妹受到伤害,他竟然背着妹妹走了十二个小时,几十里的山路,十二岁,一个本应该在父母怀里撒娇的年龄,却因为一次灾难而过早的成熟,他,心中有着何等的关怀,何等的爱呀!他,还有他,都是伟大的,都在无时无刻的诠释着爱的伟大

大爱无边,只要每个人都奉献出一点爱,那么世间就会春意盎然

警笛声还在响着,可是不觉得的刺耳了,那警笛声仿佛是对不幸遇难者的哀悼;爱,还在传递着,可是不觉得世间凉了,世间仿佛到了春暖花开的季节爱的大地洒满了阳光,每个人心中都有一个爱的天堂,在那爱的天堂中——大爱无边!

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/jiehun/9773515.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-10-21
下一篇2023-10-21

发表评论

登录后才能评论

评论列表(0条)

    保存