Thắc mắc lỗi Unintialized variable used của pointer to pointer

Mình đang học pointer to pointer thì đang thử code lại bài tập thì nó báo lỗi Unintialized variable used của hai con trỏ trỏ tới con trỏ là **A và **B, mình hiểu lỗi này là không khai báo giá trị cho nó nhưng mình tưởng khi tạo 2 con trỏ này cũng như tạo con trỏ bt ( *A, *B) thôi chứ, chỉ khác mỗi là trỏ tới chính nó 1 lần nữa?!

Code của mình đây:

//Test cấp phát động cho mảng nhiều chiều
#include <stdlib.h>
#include <ctype.h>
#include <iostream>
using namespace std;
void taomang(int **A, int dong, int cot);
void congmang(int **B, int **A, int dong, int cot);
void hienthimang(int **A, int dong, int cot);
void xoamang(int **A, int dong, int cot);
> 
void taomang(int **A, int dong, int cot)
{
	A = new int*[dong];
	for (int i = 0; i < dong; i++)
	{
		A[i] = new int[cot];
	}
	for (int i = 0; i < dong; i++)
	{
		for (int j = 0; j < cot; j++)
		{
			cout << " Phan tu [" << i << "] [" << j << "] = ";
			cin >> A[i][j];
		}
	}
	return;
}
void congmang(int **A, int **B, int dong, int cot)
{
	for (int i = 0; i < cot; i++)
		for (int j = 0; j < dong; j++)
			A[i][j] += B[i][j];
	return;
}
void hienthimang(int **A, int dong, int cot)
{
	for (int i = 0; i < cot; i++)
	{
		for (int j = 0; j < dong; j++)
			cout << " A[" << i << "] [" << j << "] = ";
		cout << endl;
	}
	return;
}
void xoamang(int **A, int dong)
{
	for (int i = 0; i < dong; i++)
		delete[] A[i];
	delete[] A;
	return;
}
int main()
{
	int dong, cot,**A, **B;
	cout << " Nhap so dong: ";
	cin >> dong;
	cout << " Nhap so cot: ";
	cin >> cot;
	cout << " Khoi tao mang A: ";
	taomang(A, dong, cot);
	cout << " Khoi tao bang B: ";
	taomang(B, dong, cot);
	cout << " Cong 2 ma tran A va B:";
	congmang(A, B, dong, cot);
	cout << " Tong A + B la: ";
	hienthimang(A,dong, cot);
	cout << " Xoa mang: ";
	xoamang(A,dong);
	xoamang(B, dong);
	return 0;
}

Bạn đang truyền tham trị :smiley: nên cấp phát chỉ nằm trong hàm đó thôi.

1 Like

Thanks bạn, cho mình hỏi với kiểu pointer to pointer thì dùng tham chiếu ntn?!

void taomang(int** &A, int dong, int cot);

thêm dấu & vào trước A như truyền tham chiếu bình thường thôi

2 Likes

Mình thử rồi cũng vẫn lỗi như vậy :smiley: :smiley: pointer to pointer này không được khuyến khích dùng lắm vì độ phức tạp của nó thôi mình học chỉ để bt thôi vậy :slight_smile:

sửa thế nào mà vẫn lỗi như vậy? :V :V Thêm & vào chỗ khai báo với chỗ implement luôn ấy

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