C++指针 char*p="123"; char*p1; p1=&p; 这里p1是地址,为什么不能指向p的地址呢
char*p="123";char*p1;p1=&p;这里p1是地址,为什么不能指向p的地址呢...
char*p="123";
char*p1;
p1=&p;
这里p1是地址,为什么不能指向p的地址呢 展开
char*p1;
p1=&p;
这里p1是地址,为什么不能指向p的地址呢 展开
3个回答
展开全部
p1是指针,可以存放某一个变量的地址,但是又不能随便存放
每个指针变量在定义的时候都会有一个基类型说明,比如你的例子中的 char *p1; 表明p1的基类型为char,每个指针变量必须指向具有其基类型的存储单元,比如p1可以指向char型的存储单元。
而你所说的变量p的类型为 char *,也就是说它的基类型不是char,因此不能让p1指向p,而必须是char **p1=&p; 才可以,此时的p1 是二级指针。
char **p1你可以理解,p1为基类型为 char* 的指针变量,因为它的定义是(char *) *p1;
每个指针变量在定义的时候都会有一个基类型说明,比如你的例子中的 char *p1; 表明p1的基类型为char,每个指针变量必须指向具有其基类型的存储单元,比如p1可以指向char型的存储单元。
而你所说的变量p的类型为 char *,也就是说它的基类型不是char,因此不能让p1指向p,而必须是char **p1=&p; 才可以,此时的p1 是二级指针。
char **p1你可以理解,p1为基类型为 char* 的指针变量,因为它的定义是(char *) *p1;
展开全部
因为p自己就是个指针,你要指向它要写指向指针的指针
char **p1=&p;
char **p1=&p;
更多追问追答
追问
char*pt="123";
char*pt1=pt;
这里pt赋值给pt1是赋值内容为什么不是地址呢?
追答
这个赋值就是地址啊,pt1只是个指针,但是它吧“123”的地址给了pt1,所以pt1也能读取这个字符串,但是读的是一个地址的内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你为什么不用p1=p呢?
你肯定是混淆p当成数组了,如果char p[]=“123”,你可以用p1=&p
你肯定是混淆p当成数组了,如果char p[]=“123”,你可以用p1=&p
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询