01/10/2018, 14:57
Hỏi về tính chất của cấp phát bằng toán tử new
Tại sao p[5] không đổi?
void f(int *a, int n)
{
a = new int[100]; // Nếu không có dòng này thì p[5] = 7
*(a + n) = 7;
}
int main()
{
int *p;
p = new int[10];
int i = 5;
*(p + i) = 100;
cout << "p[" << i << "] = " << p[i] << endl;
cout << "*(p + " << i << ") = " << *(p + i) << endl;
// Output: p[5] = 100
// *(p + 5) = 100
f(p, i);
cout << "Sau khi goi ham f" << endl;
cout << "p[" << i << "] = " << p[i] << endl;
cout << "*(p + " << i << ") = " << *(p + i) << endl;
// Output: p[5] = 100
// *(p + 5) = 100
delete[] p;
system("pause");
return 0;
}
Bài liên quan
Thêm tag ngôn ngữ vào đi bạn
Do p được truyền tham trị (qua a) nên a thay đổi thì không làm thay đổi được p bên ngoài. Tham biến thì ngược lại thôi.