C语言指针与循环:指针变量p在循环后会保存地址吗?
在程序执行后,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 著作权归作者所有。请勿转载和采集!