超级大问题啊大哥哥们!
void move(int *b,int n){
int *pp,po;
int *p=b;
int i,j,k,l;
pp=po;
for(l=0;l<n;l++)
{
*(pp+l)=*(p+l);
}
P指向数组b,那么我新设置一个数组po和新的指针变量*pp,使得*pp指向新的数组po的收地址,然后将数组b的值依次赋值给*pp,为什么这种赋值方法行不通?后来我改了下
void move(int *b,int n)
{
intpp;
int *p=b;
int i,j,k,l;
for(l=0;l<n;l++)
{
*(pp+l)=*(p+l);
}
不要新的指针变量,直接设置新的数组pp,然后以指针的方式将数组b的值依次赋值给pp,这两种方法有什么不同之处?按道理应该iadou可以啊??求指教! int po;
其中n是变量,可以这样定义数组的吗?
本帖最后由 mingcxx 于 2016-4-27 20:27 编辑
虽然在C99标准里引入了对变长数组(VLA)的支持,但我用的vs2013还是不允许数组名后方括号内出现变量表达式。所以没法实际调试。
第一个里用指针指向变长数组,通过指针为它赋值;第二个里通过数组本身为自己赋值。不同应该就是这个吧,或许指针访问速度快点吧
页:
[1]