嗯,就是上面的函数参数为int* Q,而在函数内部就直接用Q[i]这种方式来对内存操作,所以不太明白
追答两种方式都是可以的,用Q[i]的形式方便,编译器给你算好了;直接用指针要自己计算地址,计算方法Q+sizeof(int)*(i-1)。
数组作为参数传递时,习惯写作指针形式。
就是上面的函数genarate()中的参数是int* Q,而内部直接写成了Q[i],这样也对吗?
当然对了。习惯就是这样写的,也可以写成
void genarate(int a, int b, int N, int Q[]){都没有问题。只是打一个*号比两个[]方便。
c中指针和数组是等价的。
哦,是这样啊,谢谢,还想问您一下,就是在vs中上面这个程序只有后缀为.cpp才能编译通过,文件若是为.c就会报错,这是为什么,这明明就死一个c程序
追答你选的C++工程,开发环境强制的。
还是不太明白,就是平时好像只见过*Q+n和*(Q+n)这种形式的,但是上面的函数参数数int* Q,而在函数内部就直接用Q[i]这种方式来对内存操作
追答关键点就在那句话:指针可以模拟数组的行为。
另外,cpp后缀和c后缀使用的编译器是不一样的。前者是c+编译器。后者是c编译器。所以必然不同