01/10/2018, 08:21

Hỏi về truyền tham chiếu trong C

Mọi người cho em hỏi là tại sao ở hàm nhập lại có int &n còn ở hàm hàm xuat và hàm lonnhat thì chỉ là int n với ạ?

Tao Không Ngu. viết 10:28 ngày 01/10/2018

Bạn học C lâu chưa.
Trong C không có tham chiếu đâu bạn.

mai viết 10:28 ngày 01/10/2018

thế phần mình hỏi được gọi là gì vậy bạn

Tao Không Ngu. viết 10:26 ngày 01/10/2018

Bạn học C lâu chưa.
Nó không là gì cả vì nó không có trong C.

mai viết 10:31 ngày 01/10/2018

mình mới học xong phần lý thuyết cơ bản của C ,giờ mình đang làm trong 1000 bài C bài này về tìm giá trị lớn nhất trong mảng …đến chỗ này mình thấy nó giống kiểu truyền vào cái gì đó nhưng không hiểu nên lên đây hỏi

Tao Không Ngu. viết 10:37 ngày 01/10/2018

Bạn nên học lại lý thuyết C đi.
Và tài liệu này cũng nên bỏ nếu có ý định học C tử tế.

mai viết 10:30 ngày 01/10/2018

sao lại bỏ tài liệu này vậy bạn

Tao Không Ngu. viết 10:26 ngày 01/10/2018

Vì nó không đúng.
Code không có CC. Chỉ đê chạy được chứ không để học.

mai viết 10:24 ngày 01/10/2018

thế có cách nào để hiểu phần mình hỏi không bạn

Tao Không Ngu. viết 10:25 ngày 01/10/2018

Nếu chỉ học C.
KHÔNG CÓ CÁCH NÀO ĐỂ HIỂU ĐƯỢC. CẦN PHẢI HỌC CÁC NGÔN NGỮ KHÁC

mai viết 10:25 ngày 01/10/2018

trời ơi…khó thế vậy sao…cám ơn bạn nhiều

Người bí ẩn viết 10:33 ngày 01/10/2018

Bạn @maip có kiến thức về hàm và con trỏ không ?
Chỉ cần nói kỹ một chút là bạn sẽ hiểu, chứ không phải khó khăn.

rogp10 viết 10:37 ngày 01/10/2018

Cái này là ba rọi chứ không phải C à.

Còn lí do vì sao thì nó ntn. Khi bạn nhập mảng thì phải nhập luôn cái size, vì vậy phải truyền tham chiếu cái size vào, chứ truyền tham trị thì cũng như ko do chỉ có trong hàm mới có size.

Tham trị: Callee nhận 1 bản sao của biến truyền vào từ caller. Vì vậy chỉ có trong hàm mới có size đã nhập, sau đó mất luôn.
Tham biến: Với C thay vì truyền biến ta truyền con trỏ đến nó.

Nguyễn Quốc Hoàng viết 10:38 ngày 01/10/2018

thứ nhất, cú pháp này không phải của C mà là của C++
thứ 2, đây là tham số hình thức dưới dạng reference (tham chiếu) biến tham chiếu sẽ không có địa chỉ riêng mà nó sẽ dùng chung địa chỉ của thằng được truyền vào cho nó, hay hiểu nôm na là bí danh của biến được truyền vào
thứ 3, trong C hàm nhap sẽ được khai báo là

void nhap(float a[],int *n)
và khi gọi nó thì mình sẽ phải gọi là
nhap(a,&n)//&n là địa chỉ của biến n

Nguyễn Quốc Hoàng viết 10:38 ngày 01/10/2018

Hi Tao Không Ngu,
mình không nghĩ như vậy, học C là đủ rồi, C là toàn bộ những cái cơ bản của ngôn ngữ lập trình. Bạn này học C nhưng lại code theo C++, không khác gì tập xe máy mà tập luôn côn tay thôi. Ngôn ngữ khác nó còn khó hơn C nữa, tiêu biểu là Javascript, nó không thao tác với chuỗi dễ dàng được mà buộc phải dùng hàm của nó, và dĩ nhiên những hàm này tốc độ thực thi của nó sẽ chậm hơn xử lý thủ công, tốc độ chậm thế nào thì mình cũng không biết được vì không biết thuật toán trong đó là gì nữa kìa

mai viết 10:30 ngày 01/10/2018

cám ơn bạn nhiều…mình sẽ cố gắng nhiều hơn

Tao Không Ngu. viết 10:33 ngày 01/10/2018

Hi Nguyễn Quốc Hoàng.
Trong C không có khái niệm tham chiếu.
Sẽ không thể nào hiểu một khái niệm mà bản thân nó không tồn tại. Kiểu như không thể biểu diễn một vật thể 3 chiều trên 1 mặt phẳng 2 chiều.

rogp10 viết 10:24 ngày 01/10/2018

Thì dùng con trỏ chứ làm gì ghê thế. Chừng nào không cho trỏ vào 1 biến thì đúng.

Tao Không Ngu. viết 10:28 ngày 01/10/2018

Hi rogp10.
Kết quả là giống nhau nhưng nó là hai cái hoàn toán khác.
Dùng con trỏ là truyền theo tham trị. Biến con trỏ là 1 biến độc lập có vùng nhớ riêng. Còn biến tham chiếu không phải là biến độc lập.

rogp10 viết 10:29 ngày 01/10/2018

Đồng ý là vậy, nhưng mà đang nói truyền tham chiếu thì cần gì cái reference đó, con trỏ được rồi.

Tao Không Ngu. viết 10:22 ngày 01/10/2018

Không có truyền tham chiếu trong C.

Bài liên quan
0