c语言指针与数组最近用到了指针与数组遇到了这样一个问题 for(int i0iNi++){cin*(p+i)}这样输入是
c语言 指针与数组
最近用到了指针与数组 遇到了这样一个问题
for(int i=0;i<N;i++)
{
cin>>*(p+i);
}
这样输入是对的,
但 for(int i=0;i<N;i++)
{
cin>>*p;
p++;
}
这样输入就会出现问题 不知道是什么原因。。 c语言 指针 数组
[解决办法]
//第一种
cin>>*(p+i); //p指向的地址没有发生变化
//第二种
p++ ;// p = (p+1)修改了p的指向地址,相当于p指向了下一个类型元素
//检查下p是否可修改地址
[解决办法]
输入不会有问题,只是赋值完后不能再利用p去操作这些数,因为p的地址已经改变了。
char *pTemp = p;
for(int i=0;i<N;i++)
{
cin>>*pTemp;
pTemp++;
}
printf("%c\n",p[0]);
......
[解决办法]
你的问题很明显,{
cin>>*p;
p++;
}
p的值已经改变了,也就是说,p不再指向开始的那段内存了,
for(int j=0;j<N;j++)
{
cout<<*p<<endl;
p++;
}
你这里,p指向的是你开辟内存之后的内存,其内容是不可知的。
