永发信息网

指针常量和常量指针不是都可以改变地址的吗?

答案:1  悬赏:80  手机版
解决时间 2021-07-22 00:24
  • 提问者网友:咪咪
  • 2021-07-21 12:07

#include <iostream>
using namespace std;
int main()
{
int a=5;
const int b=6;
const int *p=NULL;
int const *p1=NULL;
p1=&b;
p=&a;
cout<<"p1 "<<p1<<" *p1 "<<*p1<<" "<<endl;
cout<<" p "<<p<<" *p "<<*p<<" "<<endl;
cout<<"&a "<<&a <<" &b "<<&b<<endl;
a=66;
cout<<" p "<<p<<" *p "<<*p<<" "<<endl;
int j=667;
p=&j;
p1=&j;
cout<<"p1 "<<p1<<" *p1 "<<*p1<<" "<<endl;
cout<<" p "<<p<<" *p "<<*p<<" "<<endl;
int *p2=&j;
cout<<*p2<<endl;
*p2=5;
cout<<*p2<<endl;
return 0;
}晕死了

以前看那多的资料,

结果我自己试验一下,指针常量和常量指针不是都可以改变他们已经指向了的地址的吗?但他们好像不能够自己去更改数字?

例如*p=5;这样就出错》?

那好像说的还有一种类型是指针可以改变数值,但不能更改地址的

是哪一种的?

最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-07-21 12:26

char * const,const在*的右边,是指向字符串的指针常量,指针指向的内容可以改,但是指向的地址不能改。


若有char* const p = "def", 则strcpy(p,"abc");正确,而p = "abc"错误。


const char *,const在*的左边,是指向常量字符串的指针,指针指向的地址可以改,但是指向的内容不能改。


若有const char * p = "def", 则p = "abc"正确,而strcpy(p,"abc");错误。


const char* const,*的左右两边都有const,是指向常量字符串的指针常量。


若有const char* const p = "def", 则p = "abc"和strcpy(p,"abc");都错误。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯