在此代码段中(char c ='a'; const char * p1 =&c; char * const p2 =&c;)p1和p2的作用是什么,星形的作用是什么(*)在两种情况下?


回答 1:

const char *表示指向的值不能更改。

char * const表示指针本身不能更改。

还有第三种变化

const char * const值和指针都不能更改。

#include 

int main(无效)
{
char a ='a';
char b ='b';

const char * p1 =&a;
char * const p2 =&a;
const char * const p3 =&a;

printf(“ a'%c'\ n”,a);
printf(“ p1%08X'%c'\ n”,p1,* p1);
    printf(“ p2%08X'%c'\ n”,p2,* p2);
printf(“ p3%08X'%c'\ n”,p3,* p3);

// * p1 ='1'; //错误
* p2 ='2';
// * p3 ='3'; //错误

p1 =&b;
// pb =&b; //错误
// pc =&b; //错误

printf(“ a'%c'\ n”,a);
printf(“ p1%08X'%c'\ n”,p1,* p1);
    printf(“ p2%08X'%c'\ n”,p2,* p2);
printf(“ p3%08X'%c'\ n”,p3,* p3);
}