【发布时间】:2020-12-13 13:56:30
【问题描述】:
我注意到我的指针地址在传递给函数时是不同的。你不确定
访问函数内部存在的值吗?请不要建议从函数中返回指针
值。我严格地想使用 void 函数。
输出:
&nPtr = 6422300
&Ptr = 6422272
&nPtr = 6422300
请参阅以下代码:
#include<stdio.h>
void myFunc(int *Ptr){
printf("&Ptr = %d\n", &Ptr);
};
void main(){
int *nPtr;
printf("&nPtr = %d\n", &nPtr);
myFunc(nPtr);
printf("&nPtr = %d\n", &nPtr);
}
让我更清楚。这是我要修复的代码。我想要的只是让两个指针指向同一个地址。我想
使用最佳编码实践。
#include<stdlib.h>
#include<stdio.h>
void myFunc(int *Ptr){
Ptr = malloc(10*sizeof(int));
printf("*Ptr = %d\n", *Ptr);
};
void main(){
int *nPtr;
printf("*nPtr = %d\n", *nPtr);
myFunc(nPtr);
printf("*nPtr = %d\n", *nPtr);
}
【问题讨论】:
-
myFunc 使用 *Ptr,而 main 使用 int *nPtr。在 main 中尝试 int *Ptr。 nptr 是指向下一个节点的指针
-
如何使nPtr=Ptr?
-
您是要制作
nPtr==Ptr还是要制作&nPtr==&nPtr?这是两个完全不同的东西。后者是不可能的,因为它们是两个不同的变量,每个变量都必须有自己的地址。前者您已经拥有,但您在函数中打印&Ptr,而不是Ptr。如果您打印了Ptr,它将与nPtr相同,但它不会与您在main()中打印的&nPtr相同。 -
P.S.您应该使用
%p格式说明符来打印指针。并非所有指针都是ints,有些指针更长。
标签: c