C语言:0xC0000005: 写入位置 0x00000000 时发生访问冲突。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:0xC0000005: 写入位置 0x00000000 时发生访问冲突。相关的知识,希望对你有一定的参考价值。
分了两个文件来写:
file1:
#include<stdio.h>
#include <stdlib.h>
#define N 10
int a[N];
void main()
int menu();
extern void input(int b[]);
void sequence();
void search();
void output();
int n;
while (1)
switch (menu())
case 1:input(a[N]); break;
case 2:sequence(); break;
case 3:search(); break;
case 4:output(); break;
case 5:exit(0);
//菜单
int menu()
int order;
puts("********************");
puts("* 1.数据输入 *");
puts("* 2.起泡排序 *");
puts("* 3.查找 *");
puts("* 4.数据输出 *");
puts("* 5.退出 *");
puts("********************");
scanf("%d", &order);
return order;
//数据排序
void sequence()
int i, j, tmp;
for (i = 0; i<N - 1; i++)
for (j = 0; j<N - 1 - i; j++)
if (a[j]>a[j + 1])
tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp;
puts("排序完成");
//数据查找
void search()
int min = 0, max = N - 1, mid, num;
puts("请输入需要查找的数");
scanf("%d", &num);
while (min <= max)
mid = (min + max) / 2;
if (a[mid] == num) printf("%d在数组的第%d个\n", num, mid + 1); break;
if (a[mid]<num) min += 1;
if (a[mid]>num) max -= 1;
if (min>max) printf("%d不在数组中\n", num);
//数据输出
void output()
int i;
puts("输出排序后的数据");
for (i = 0; i<N; i++)
printf("%d ", a[i]);
puts("");
————————————————————————————
file2:
//数据输入
#define N 10
extern void input(int a[])
int i;
printf("请输入%d个数字\n", N);
for (i = 0; i<N; i++)
printf("输入第%d个数字:", i + 1);
scanf("%d", &a[i]);
puts("输入完毕");
怎么改?
追答目测是 input(a[N]) 传个地址过去就行了 input(a); input(a[N]) 表示 a[10] 首先一共都才a[9] 10 就超出数组了 其次extern void input(int a[]) 是传入一个数组。。。额
追问把input(a[N])改成input(a); 还是不行
以上是关于C语言:0xC0000005: 写入位置 0x00000000 时发生访问冲突。的主要内容,如果未能解决你的问题,请参考以下文章
IXAudio2 - 0xC0000005:访问冲突写入位置 0x00000000
C++:0xC0000005:访问冲突写入位置0x00000000
处有未经处理的异常:0xC0000005:写入位置0x00EFA000时发生访问冲突.
c++中的 0x004114a4 处有未经处理的异常: 0xC0000005: 写入位置 0xcccccccc 时发生访