作者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
推 dendrobium:因為 array=(int*)malloc(sizeof(int)*3*3); 10/23 14:36
→ dendrobium:所以 ptr 和 array所指向的位置並不相同 10/23 14:36
→ dendrobium:如果想要得到相同的東西 請拿掉上面那行 10/23 14:37
推 QQ29:感覺你觀念有根本的錯誤耶 為啥你會想再function內再malloc 10/23 14:45
→ QQ29:一次? 不是說指標要用就一定要配置空間阿@@ 10/23 14:45
→ cheekyboy:感謝兩位指導 已解決 10/23 15:43