1.内存溢出问题
使用p++,来遍历数组的下一个值,那么在下面重新for()循环for(int i=0;i<4;i++)
for(int i=0;i<4;i++)
{
printf("address:0x%p,数组第%d位的值为:%d \n",p,i+1,*p);
p++;
}
for(int i=0;i<4;i++)//会有内存溢出
{
printf("address:0x%p,数组第%d位的值为:%d \n",p,i+1,*p);
p++;
}
#include<stdio.h>
int main()
{
int array[4]={3,2,423,4};
int *p=array;//命名指针变量承接数组array的首地址
//遍历输出数组的值
for(int i=0;i<4;i++)
{
//第一种方式
//printf("address:0x%p,数组第%d位的值为:%d \n",(p+i),i+1,*(p+i));
//第二种方式
printf("address:0x%p,数组第%d位的值为:%d \n",p,i+1,*p);
p++;
}
//p=array;//注意:要重新把数组的首地址,给指针变量
for(int i=0;i<4;i++)//不然会有内存溢出
{
printf("address:0x%p,数组第%d位的值为:%d \n",p,i+1,*p);
p++;
}
/*
printf("数组第1位的值为:%d\n",*p);
printf("数组第2位的值为:%d\n",*(p+1));
printf("数组第3位的值为:%d\n",*(p+2));
printf("数组第4位的值为:%d\n",*(p+3));
*/
return 0;
}
2.内存溢出的结果如下:
3.内存溢出的解决方法:
在for循环上放,重新把数组的首地址赋值给指针变量
p=array;//注意:要重新把数组的首地址,给指针变量
for(int i=0;i<4;i++)//不然会有内存溢出
{
printf("address:0x%p,数组第%d位的值为:%d \n",p,i+1,*p);
p++;
}
解决后: