30/09/2018, 16:20
Đổi giá trị 2 số cho nhau
Em code bài đổi giá trị 2 số cho nhau, ở đây là a = 2 và b = 3 cho mọi người dễ hình dung.
Thế nhưng khi run thì giá trị a, b vẫn không đổi, nghĩa là a vẫn = 2, b vẫn = 3.
Mọi người giúp em với
#include <stdio.h>
#include <stdlib.h>
int swap(int a, int b)
{
int t = a;
a = b;
b = t;
return a, b;
}
int main(int argc, char *argv[])
{
int a = 2, b = 3;
printf("a = %d b = %d", a, b);
swap(a, b);
printf("
After being swapped:
");
printf("a = %d b = %d", a, b);
return 0;
}
Bài liên quan
Em sửa lại hàm swap như thế này
Lý do là vì C truyền tham trị nên ta cần sử dụng con trỏ. Anh có làm một bài chứng minh ở đây
Dạ cám ơn anh, truyền tham trị em cũng hiểu, nhưng con trỏ em chưa học tới.
Để bữa nào rảnh em học về con trỏ.
Mà sao series C của anh không có con trỏ nhỉ (em hỏi vậy thôi chứ em có thấy video nói về nó rồi)
Em xem đỡ bên C++, nó giống như C thôi. Anh chưa có thời gian làm thôi. Anh sẽ làm đầy đủ.
Sao đổi rồi, build nó báo lỗi tùm lum vậy
báo như nào bạn đưa lỗi lên?
Con trỏ chưa học tới thì truyền tham chiếu cũng được mà
The instruction at 0x00… referenced memory at 0x0… . The memory could not be read, xuất hiện cùng nó là bảng báo file .exe has stopped working
Em đã thử, nhưng nó báo expected ‘;’ , ‘,’ or ‘)’ before ‘&’ token
Em đã copy luôn code của anh, kể cả khi chuyển qua int, có return hay không, nó vẫn báo lỗi
expected ‘;’ , ‘,’ or ‘)’ before ‘&’ token
trong C không có & (reference) trong hàm nên không chạy được.
Bạn sửa lại như này nhé, mình chạy trên ubuntu 14.10 thấy ok:
Cám ơn bạn nhiều, đã thành công
Với câu này thực ra chẳng cần con trỏ
Cách này chơi được nhưng hơi khó hiểu và hình như bị báo warning :D.
đọc cái này mà khó hiểu chứng tỏ là thời gian dành cho lập trình chưa đủ; và ko hiểu bảng thứ tự toán tử và độ ưu tiên.