把一个整型数组的后N位数字前置到开头的程序的片段除了问题

小飞好可爱 2015-09-28 11:03:17
一个整型数组长度为M,把最后的N位前置到开头,然后num[0]到num[N-1]顺次推到最后,使num[N-1]变成num[M-1],num[0]变成num[M-N]。
单步到这里就报错Access Violation,不知道是怎么回事。

void change(int *pointer[M]){
int i;
int temp[N];
for(i=0; i<N; i++) temp[i]=*pointer[M-N+i];
for(i=M-1; i>N-1; i--) *pointer[i]=*pointer[i-N];
for(i=0; i<N; i++) *pointer[i]=temp[i];
}

大神求教啊!我是叶良辰,但是别说一百种方法了,我连一种方法也找不到啊!哭瞎~
...全文
85 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小飞好可爱 2015-09-30
  • 打赏
  • 举报
回复
this is the whole of my code

# include<stdio.h>
# define M 6
# define N 2

void input(int num[]);
void change(int *pointer[]);

int main(){
	int num[M];
	int i;
	int *p[M];

	for(i=0; i<M; i++) p[i]=num[i];
	input(num);
	printf("what you input:\n");
	for(i=0; i<M; i++) printf("%d\t", num[i]);
	putchar('\n');
	change(p);
	printf("after change:\n");
	for(i=0; i<M; i++) printf("%d\t", p[i]);

	return 0;
}

void input(int num[]){
	int i;

	printf("input a string of numbers:\n");
	for(i=0; i<M; i++){
		if(!i) printf("input the 1st number:\n");
		else if(1==i) printf("input the 2nd number:\n");
		else if(2==i) printf("input the 3rd number:\n");
		else printf("input the %dth number:\n", i+1);
		scanf("%d", &num[i]);
	}
}

void change(int *pointer[M]){
	int i;
	int temp[N];
	/*
	for(i=0; i<N; i++){
		*temp=*pointer[i];
		*pointer=*pointer[M-N+i];
		*pointer[M-N+i]=*temp;
	}
	*/
	for(i=0; i<N; i++) temp[i]=*pointer[M-N+i];
	for(i=M-1; i>N-1; i--) *pointer[i]=*pointer[i-N];
	for(i=0; i<N; i++) *pointer[i]=temp[i];
}
小飞好可爱 2015-09-29
  • 打赏
  • 举报
回复
引用 1楼ipqtjmqj 的回复:
形参int *pointer[M]改成int (*pointer)[M],使用时同样加括号
为什么用这种指针啊,此处并不涉及多维数组啊。
fly_dragon_fly 2015-09-29
  • 打赏
  • 举报
回复
调用的地方是怎么样的
二班的码农 2015-09-28
  • 打赏
  • 举报
回复
楼主,为何在函数参数中定义一个指针数组,定义一个数组不行吗,楼主,你贴下你的函数调用
ipqtjmqj 2015-09-28
  • 打赏
  • 举报
回复
形参int *pointer[M]改成int (*pointer)[M],使用时同样加括号

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧