C++指针的小问题
strings("hello")string*p=&s这是指针指向了字符串S的首字母位置;而intarr[5]={1,2,3,4,5}int*p=arr;int*p2=p...
string s("hello")
string *p=&s 这是指针指向了字符串S的首字母位置;
而int arr[5]={1,2,3,4,5}
int *p=arr;
int *p2= p +5; 这里指针P2指向数组的第5个元素的地址,为什么这里等式右端 不加 取地址操作符 &? 展开
string *p=&s 这是指针指向了字符串S的首字母位置;
而int arr[5]={1,2,3,4,5}
int *p=arr;
int *p2= p +5; 这里指针P2指向数组的第5个元素的地址,为什么这里等式右端 不加 取地址操作符 &? 展开
6个回答
展开全部
其实这里主要是为了考虑类型匹配。
string * p = &s,也许你已经知道,string也是通过指针封装的一个字符串类型,既然你又加了一层指针,当然需要用&表示对应的类型匹配。
int *p2= p +5;这里不需要取地址是因为p本身就代表了地址,p的类型是int*就是地址,而int* p2 = p左右的类型是一致的。
string * p = &s,也许你已经知道,string也是通过指针封装的一个字符串类型,既然你又加了一层指针,当然需要用&表示对应的类型匹配。
int *p2= p +5;这里不需要取地址是因为p本身就代表了地址,p的类型是int*就是地址,而int* p2 = p左右的类型是一致的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为p已经是一个指针,arr是数组,可以当做指针处理,而s自己不是一个指针,所以需要地址符&
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针就是地址,所以不用取地址符
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p本身就是就是地址对不对,指针的作用就是指向某个地址。你可以试下输出改地址,例如cout<<p;则输出p指向的地址。cout<<*p;则输出的是改地址出存放的值。所以p+5就是在p本身的地址上,移动了5个地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p本来就是地址指针所以不用加&
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询