在程序执行后,p所指的位置仍然是数组a的第一个元素地址。在for循环中,p自增并且指向下一个元素的地址,但是循环结束后p不会保存循环后所指的地址。

在C语言中,指针变量存储的是一个内存地址,这个地址指向一个特定的数据。当你在循环中修改指针变量的值时,你实际上修改的是指针变量中存储的地址。

在你的代码中,循环开始时,指针变量p指向数组a的第一个元素。在循环的每次迭代中,p自增,指向数组a的下一个元素。循环结束后,p仍然指向数组a的第一个元素地址,因为在循环中修改的是指针变量p所指向的地址,而不是指针变量p本身。

如果你想在循环结束后保留p最后指向的地址,你需要在循环结束后将p的值赋值给另一个变量。例如,你可以创建一个新的指针变量q,并在循环结束后将p的值赋值给q:

#include <stdio.h>

void inverse(int * , int );
void main()
{
    int a[10]={33,8,0,44,5,6,7,7,8,6};
    int *p=a;
    int *q;
    for(p;p<p+9;p++ )
    {
        t=*p ; *p=*q ; *q=t;
    }
    q = p; // 将p的值赋值给q
}

现在,q指向数组a的最后一个元素,因为它存储了p在循环结束时的地址。

总结来说,循环中修改的是指针变量所指向的地址,而不是指针变量本身。循环结束后,指针变量会回到其初始值,除非你将其赋值给另一个变量。


原文地址: http://www.cveoy.top/t/topic/bLEQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录