// 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;
}
Cách dùng con trỏ 2 chiều trong hàm?
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];
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
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.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;
}
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
còn các lần sau thì chỉ là học cách copy code lên daynhauhoc thôi
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.
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 vì theo em thấy con trỏ 2 chiều nó không giống mảng
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ể.
nội dung câu hỏi thì em cũng chịu thôi vì tùy chủ thread muốn gì nữa, mà em thấy google nó index cái title cũng đủ rồi .
có iostream rồi mà bạn
This post was flagged by the community and is temporarily hidden.
you can refer to this article