将指针从函数返回到 main
Returning a pointer from a function to main
编写一个程序来查找具有 10 个整数的数组中最大元素的地址我的代码是:
int* Largest(int *array, int size);
int main()
{
int *Ptr, array[10];
int r, c, num = 1;
for(r = 0; r < 10; r++) {
array[r] = num + 1;
}
Ptr = Largest(array, 10);
printf("%p", Ptr);
return 0;
}
int* Largest(int *array, int size)
{
int *largest, r;
for(r = 0; r < size; r++) {
if(r = 0) {
largest = &array[0];
}
else {
if(array[r] > *largest) {
largest = &array[r];
}
}
}
return largest;
}
我在编译时没有收到任何错误或警告,但是程序没有执行任何操作并被 windows 自动停止。
你可能没有包括 headers 你至少需要 stdio.h
您的作业很可能不应该
if(r = 0)
我觉得应该是
if (r == 0)
我看到有些人通过
来防止这种问题
if (0 == r)
因为如果您使用 =
运算符,程序将无法编译,无论如何这不是一个很好的方法,相反您应该
larget = &array[0];
for (r = 1 ; r < size ; ++r)
这样显然效率会更高
至于程序停止,您可以尝试 运行 cmd.exe
window 并直接从那里执行您的程序。
注意:if (condition1) {} else if (condition2) {}
在c中有效,不需要if (condition1) {} else {if (condition2) {}}
。
当控件从 largest() 返回时
然后堆栈框架现在在内存中是清晰的。
然后系统寻找包含地址的 ptr 但找不到任何东西,因此系统终止该程序
编写一个程序来查找具有 10 个整数的数组中最大元素的地址我的代码是:
int* Largest(int *array, int size);
int main()
{
int *Ptr, array[10];
int r, c, num = 1;
for(r = 0; r < 10; r++) {
array[r] = num + 1;
}
Ptr = Largest(array, 10);
printf("%p", Ptr);
return 0;
}
int* Largest(int *array, int size)
{
int *largest, r;
for(r = 0; r < size; r++) {
if(r = 0) {
largest = &array[0];
}
else {
if(array[r] > *largest) {
largest = &array[r];
}
}
}
return largest;
}
我在编译时没有收到任何错误或警告,但是程序没有执行任何操作并被 windows 自动停止。
你可能没有包括 headers 你至少需要
stdio.h
您的作业很可能不应该
if(r = 0)
我觉得应该是
if (r == 0)
我看到有些人通过
来防止这种问题if (0 == r)
因为如果您使用
=
运算符,程序将无法编译,无论如何这不是一个很好的方法,相反您应该larget = &array[0]; for (r = 1 ; r < size ; ++r)
这样显然效率会更高
至于程序停止,您可以尝试 运行 cmd.exe
window 并直接从那里执行您的程序。
注意:if (condition1) {} else if (condition2) {}
在c中有效,不需要if (condition1) {} else {if (condition2) {}}
。
当控件从 largest() 返回时 然后堆栈框架现在在内存中是清晰的。 然后系统寻找包含地址的 ptr 但找不到任何东西,因此系统终止该程序