Cách dùng con trỏ 2 chiều trong hàm?

// 1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;


void nhapmang(int **a, int d, int c);
void inmang(int **a, int d, int c);

int _tmain(int argc, _TCHAR* argv[])
{
	int **a;
	int d, c;

	cout << "nhap so dong:";
	cin >> d;
	cout << "nhap so cot:";
	cin >> c;
	nhapmang(a, d, c);
	inmang(a, d, c);
	return 0;
}
void nhapmang(int **a, int d, int c)
{
	for (int i = 0; i < d; i++)
	{
		for (int j = 0; j < c; i++)
		{
			cout << "phan tu thu a[" << i << "][" << j << "]" << endl;
			cin >> a[i][j];
		}
	}
}
void inmang(int **a, int d, int c)
{
	cout << "mang sau khi nhap la:";
	for (int i = 0; i < d; i++)
	{
		for (int j = 0; j < c; j++)
		{
			cout << a[i][j];
		}
	}
	cout << endl;
}

Do a là mảng động, bạn phải cấp bộ nhớ cho nó.
Trước dòng nhập mảng bạn thêm dòng sau:

a= new int*[d];
for(int i=0; i<d;++i) a[i]= new int[c];
2 Likes

Sao mà chịu đươc, dùng con trỏ mà không cấp phát động cho nó rồi dùng mảng lung tung khi chưa khai báo nữa :v:
Cái include viết cũng bậy, dùng cout, cin mà không chịu include iostream

ak.hiu rồi. cảm ơn Gio nka. BreakDown ko phải bậy đâu mà ko hiu sao mỗi lần copy qua trang là nó ko xuất hiện mấy dòng include. chứ có khai báo mà

dùng cái biểu tưởng </> để copy code vào.

còn ** là con trỏ cấp 2 chứ không phải là mảng 2 chiều, nhiều người hay lầm tưởng cái này lắm

1 Like
// 1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;


void nhapmang(int **a, int d, int c);
void inmang(int **a, int d, int c);

int _tmain(int argc, _TCHAR* argv[])
{
	int **a=0;
	int d, c;


	cout << "nhap so dong:";
	cin >> d;
	cout << "nhap so cot:";
	cin >> c;

	a = new int *[d];

	for (int i = 0; i < d; i++)
		a[i] = new int[c];

	for (int i = 0; i < d; i++)
		delete[] a[i];
	delete[] a;

	nhapmang(a, d, c);
	inmang(a, d, c);
	return 0;
}
void nhapmang(int **a, int d, int c)
{
	for (int i = 0; i < d; i++)
	{
		for (int j = 0; j < c; i++)
		{
			cout << "phan tu thu a[" << i << "][" << j << "]" << endl;
			cin >> a[i][j];
		}
	}
}
void inmang(int **a, int d, int c)
{
	cout << "mang sau khi nhap la:";
	for (int i = 0; i < d; i++)
	{
		for (int j = 0; j < c; j++)
		{
			cout << a[i][j];
		}
	}
	cout << endl;
}

vẫn ko include dc. mới biết trang này nên chưa nghiên cứu hết. mà bạn ơi sao mình cấp phát rồi nó vẫn bị sai

Chưa chịu làm việc thì đã cho nghỉ rồi :D: bạn để delete ở cuối chương trình.

quê thiệt. đúng là cầm đèn chạy trc ô tô. thú thật con trỏ vs cấp phát động mình hơi mơ mơ

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << "hello" << setw(3);
return 0;
}

copy code vàom sau đó bôi đen, rồi chọn dấu bên trên là đc mà

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << "hello" << setw(3);
return 0;
}

Nhờ @Gio sửa lại cái tiêu đề câu hỏi tí, anh chả hiểu @Long_Long đang hỏi gì cả :frowning:

3 Likes

Bạn này hỏi về việc tại sao đoạn code trên không chạy.

Nhưng lần đầu thì do không cấp phát động khi dùng con trỏ -> không chạy
Lần 2 thì do delete con trỏ trước khi sử dụng hàm xử lý -> không chạy :1234:
còn các lần sau thì chỉ là học cách copy code lên daynhauhoc thôi :1234:

1 Like

Anh đã sửa tiêu đề thành

Cách truyền mảng vào trong hàm?

@BreakDown nghĩ nên thêm nội dung câu hỏi như thế nào? Vì post code không mà không có câu hỏi là không rõ ràng.

1 Like

Vâng,

Vì ai mới học tới con trỏ mà thấy hỏi ** & mà không chạy là hiểu rồi, bản chất ngày xưa em cũng bị cái này mà mò 3 ngày mới ra nên nhớ đời luôn, hehe.

mà anh nên sửa lại là: cách dùng con trỏ 2 chiều trong hàm :smiley: vì theo em thấy con trỏ 2 chiều nó không giống mảng :smile:

1 Like

Thế còn nội dung câu hỏi mình nên thêm như thế nào? Vì câu hỏi này chỉ có code mà không có câu hỏi cụ thể.

1 Like

nội dung câu hỏi thì em cũng chịu thôi :smile: vì tùy chủ thread muốn gì nữa, mà em thấy google nó index cái title cũng đủ rồi :smile:.

1 Like

có iostream rồi mà bạn

This post was flagged by the community and is temporarily hidden.

you can refer to this article

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?