作者cheekyboy (唷)
看板C_and_CPP
标题[问题] 二维阵列函数问题
时间Fri Oct 23 14:05:51 2009
我知道我有一个函数func(int* array),array 是一个二维矩阵,
可是我无法去修改函数内容,
想要将该阵列取出,
所以写了下面程式测试,
却发现取出完全不相同的东西,
还有请版上的高手开导一下,
感恩
开发平台: dev C++
测资输入:
#include <stdio.h>
#include <stdlib.h>
void func(int*);
int matrix[3][3]={{14,23,42}, {23,423,14}, {34,34,53,}};
int main(void)
{
int *ptr;
int i, j;
ptr=(int*)malloc(sizeof(int)*3*3);
func(ptr);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("ptr[%d*3+%d]=%d\n",i,j,*(ptr+i*3+j));
}
free(ptr);
system("pause");
return 0;
}
void func(int* array)
{
int i, j;
array=(int*)malloc(sizeof(int)*3*3);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
array[i*3+j]=matrix[i][j];
printf("array[%d*3+%d]=%d\n",i,j,*(array+i*3+j));
}
}
return;
}
输出结果:
array{0*3*0]=14
array[0*3*1]=23
.
.
.
.
.
ptr[0*3*0]=4064384
ptr[0*3*1]=4064384
.
.
.
补充说明: 只是用ptr去取代array 为何输出结果会不相同呢??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.110.200.124
1F:推 dendrobium:因为 array=(int*)malloc(sizeof(int)*3*3); 10/23 14:36
2F:→ dendrobium:所以 ptr 和 array所指向的位置并不相同 10/23 14:36
3F:→ dendrobium:如果想要得到相同的东西 请拿掉上面那行 10/23 14:37
4F:推 QQ29:感觉你观念有根本的错误耶 为啥你会想再function内再malloc 10/23 14:45
5F:→ QQ29:一次? 不是说指标要用就一定要配置空间阿@@ 10/23 14:45
6F:→ cheekyboy:感谢两位指导 已解决 10/23 15:43