30/09/2018, 16:04
Thao tác con trỏ
int x,*p;
x=10;
*p=x;
theo sách nói đoạn chương trình này sai ở chỗ con trỏ p không được khởi tạo để nó trỏ tới một chỗ xác định, do đó nó trỏ tới một chỗ ngẫu nhiên nào đó. nếu trỏ vào chỗ quan trọng của một chương trình nào đó thì chương trình đó sẽ bị phá. vì vậy kho dùng biến con trỏ cần lưu ý cho nó trỏ tới chỗ xác định.
mọi người cho em hỏi là khởi tạo để nó trỏ tới chỗ xác định theo mọi người hiểu là ntn, em thấy hơi mơ hồ về điều này
Bài liên quan
Châu không hiểu chỗ này là vì Châu chưa hiểu bản chất của con trỏ. Con trỏ là một biến, cái đặc biệt là biến này sẽ chứa địa chỉ của biến khác.
Con trỏ mà chưa xác định trỏ đến đâu có nghĩa là nó đã có chứa địa chỉ của một biến nào đó rồi. Nhưng biến nào đó mình không biết được. Dẫn đến tất cả các thao tác trên con trỏ đó sẽ ảnh hưởng đến biến nào đó mà ta không biết. Đây là một lỗi, có thể dẫn đến crash chương trình. Tức chương trình bị ngắt ngang, tắt hẳn khi đang chạy.
Châu xem thêm các bài liên quan đến con trỏ ở đây. (19, 20, 21, …)
vâng để em xem lại.
p/s: e tên Châu ạ
Đã sửa Có thắc mắc thì quay lại hỏi nhé.
dạ. e vẫn còn thắc mắc nhiều lắm về con trỏ, như kiểu trong danh sách liên kết ý ạ, để lấy giá trị trường info của một nút bằng con trỏ thì làm như thế nào, theo thuật toán thì = link(L) với L là con trỏ đầu tiên. em cứ loay hoay mà không ổn không biết áp dụng vào C với C++ ntn
mình nghĩ: L.info là lấy thông tin của nút được trỏ bởi con trỏ L thôi.
còn muốn lấy thông tin của các nút sau con trỏ L thì cần phải có thêm 1 con trỏ nữa chạy.
Châu đưa ra code cụ thể cho mọi người xem. Cái em học khác với cái các bạn khác học. Nói chung chung dễ dẫn đến hiểu nhầm nhau lắm
là như thế này VD:
thực hiện đổi trường info của các phần tử của danh sách nối đơn với phần tử đầu tiên được trỏ tới bằng List
theo quy tắc nếu chữ cái đều tiên = ‘a’ thì đổi thành ‘z’
đó
thì thuật toán duyệt danh sách của bọn em nó sẽ là dùng list chạy từ nút đầu tới nút cuối để kiểm tra cụ thể là
cho biến con trỏ chạy từ đầu danh sách tới cuối danh sách với (L) là con trỏ trỏ tới phần tử đầu tiên
1, if L:=null then write ("danh sách rỗng ");
2, if L<> null then while link(L)<> null do begin
“duyệt info bằng kiểm tra a[1]=‘a’ đổi thành ‘z’)//cái này e quên
làm trong pascal " trong C e làm được”
L:=link(L):
end;
đó thuật toán là như vậy nhưng e không biết áp dụng trong C ntn với cấu trúc cho trước :
đề bài cụ thể là ntn ạ
Ah, anh hiểu ý em rồi. Vấn đề có lẽ em chưa nắm lắm về con trỏ, mà bắt tay vào làm link list có lẽ hơi khó khăn.
Anh gợi ý là em có thể xem các bài trong phần C++ nói về con trỏ và đặc biệt phần nói về link list. Link list anh giới thiệu trong videos này là anh dùng
class
. Nhưng em có thể bơ nó đi và hiểu là anh đang dùngstruct
.Dạ. Ok tks a.e cũng đang xem video và học c++ của a rồi.hy vọng giúp e vớ ra được nhiều thứ:(