问题描述
- 在指针中P和*p 到底哪个代表指针所对应的地址?哪个是代表该地址内所对应的值?
-
在指针中P和*p 到底哪个代表指针所对应的地址?哪个是代表该地址内所对应的值?老是搞不清二者的区别。请帮忙讲解一下。谢谢
void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;}
和上面有什么区别?
void swap(int *p,int *q)
{
int *temp;
temp=p;
p=q;
q=temp;}
为什么一个值交换了 一个没有交换?
解决方案
如果你希望交换指针,那么应该用 *&p
否则你改变指针不会反映到主程序。
解决方案二:
p代表地址,*p代表对应的地址。
看下以下的代码
如声明一个整型变量 int a;
声明一个整型的指针变量,你可以将int*作一种变量类型,是整形的指针变量,声明的变量是一个地址。
int* p = &a;//将a的地址赋值给p
cout<<(*p)<<endl;//是解除对指针的引用,取地址变量p对应的值
解决方案三:
第一行那个写错了,p代表地址,*p代表地址对应的值。
解决方案四:
p代表地址,*p代表地址所对应的值,上面函数所传的参数为地址,函数中可以通过地址来取值和改变该值,当参数为值时,传递进入函数后,函数将会新建一个变量和所传参数的值一样,函数所做的改变都是对这个新建值有作用,而对原值无任何影响,不知你是否明白?
解决方案五:
int p 这是声明一个变量,这个变量是一个指针,就是说在声明的时候 * 和p 一起出现,表示p是一个指针变量。p的值是另一个变量的地址。
当不是声明的时候 * 和 p 一起出现的时候,*P 就表示p所指向内存单元的值。
在下面的函数部分
int *temp; 这是声明或者说是定义, 和 temp 一起出现,表示temp是一个整型指针变量。temp的值是另一个整型变量的地址。
而上面的函数中,
*P 和*q 都不是在声明的时候出现,所以*p和*q都代表的p和q所指向内存单元的值,而不是地址
时间: 2024-09-29 14:44:11