#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
int **a = NULL;
int *find_a(int **a)
{
int data;
printf("input find number:\n");
scanf("%d", &data);
int i = 0,j;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 8; j++)
{
if (a[i][j] == data)
{
return &a[i][j];
}
}
}
return NULL;
}
void create_a(int **a)
{
}
void pint_a(int **a)
{
int i, j;
}
int main(void)
{
create_a(a);
a = (int **)calloc(10, sizeof(int*));
int i, j;
for (i = 0; i < 10; i++)
{
a[i] = calloc(8, sizeof(int));
}
srand((unsigned int)time(NULL));
for (i = 0; i < 10; i++)
{
for (j = 0; j < 8; j++)
{
a[i][j] = rand() % 100;
}
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 8; j++)
{
printf("%d\t", ((a + i) + j));
}
printf("\n");
}
if (find_a(a) == NULL)
printf("not find data \n");
else
printf("find data %d\n", find_a(a));
system("pause");
return 0;
}
这是放在主函数中的,运行正确,
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
int **a = NULL;
int *find_a(int **a)
{
int data;
printf("input find number:\n");
scanf("%d", &data);
int i = 0,j;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 8; j++)
{
if (a[i][j] == data)
{
return &a[i][j];
}
}
}
return NULL;
}
void create_a(int **a)
{
a = (int **)calloc(10, sizeof(int*));
int i, j;
for (i = 0; i < 10; i++)
{
a[i] = calloc(8, sizeof(int));
}
srand((unsigned int)time(NULL));
for (i = 0; i < 10; i++)
{
for (j = 0; j < 8; j++)
{
a[i][j] = rand() % 100;
}
}
}
void pint_a(int **a)
{
int i, j;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 8; j++)
{
printf("%d\t", ((a + i) + j));
}
printf("\n");
}
}
int main(void)
{
create_a(a);
pint_a(a);
if (find_a(a) == NULL)
printf("not find data \n");
else
printf("find data %d\n", find_a(a));
system("pause");
return 0;
}
这是拿出来后的样子
运行出错,结果提示:0x013D16E4 处有未经处理的异常(在 1201考试题07.exe 中): 0xC0000005: 读取位置 0x00000000 时发生访问冲突。
并指向这句:printf("%d\t", ((a + i) + j));