#include"iostream.h"
int main()
{
char c='a';
char *cptr=&c;
char **cptrptr=&cptr;
cout<<"Address of Var c="<<cptr<<endl;
cout<<"Data of Var c="<<*cptr<<endl;
cout<<"Address of Pointer cptr="<<cptrptr<<endl;
cout<<"Address of Var c="<<*cptrptr<<endl;
*cptr=2+*cptr;
cout<<"Data of Var c="<<*cptr<<endl;
return 0;
}
#include"iostream.h"
int main()
{
char c='a';
char *cptr=&c;
char **cptrptr=&cptr;
cout<<"Address of Var c="<<cptr<<endl;
cout<<"Data of Var c="<<*cptr<<endl;
cout<<"Address of Pointer cptr="<<cptrptr<<endl;
cout<<"Address of Var c="<<*cptrptr<<endl;
*cptr=2+*cptr;
cout<<"Data of Var c="<<*cptr<<endl;
return 0;
}
编辑结果是:
Address of Var c=a烫汤
Data of Var c=a
Address of Pointer cptr=0x0012FF78
Address of Var c=a烫汤
Data of Var c=c
Press any key to continue
c++初学者, 字符的地址为什么乱码?c++里的字符地址本来应该是什么样子?
可是c是字符。不是字符串。用void*转换是不是可以把一个字符转变成结尾加'/0'的占用2个字符位置的字符串?
追答char *cptr=&c;
这句话之后,cptr的类型就是char*,至于它指向的是单个字符,还是一个字符数组,都无所谓。
因为cptr的类型是char*,所以执行cout<<cptr时,会自动理解为,从cptr开始,往后输出字符,直到遇到字符串结束标志\0为止。
而用void*强制转换操作的是cptr,跟字符c是没有关系的。
我不明白,如果将c这么定义的话char c=“a”,不是才是以'\0'结尾的吗?
追答char* 是指针,你不知道指向的字符串有多长,char是基本类型,固定8位