Đây là giao dịch. Tôi có một mảng ký tự lớn và đang cố gắng điều khiển nó. Dưới đây là một số mã tôi đã sử dụng để thử nghiệm ý tưởng:Rắc rối với con trỏ C
#include <stdio.h>
char r[65536],*e=r;
main() {
e+=8;
while(*e) {
*e+=1;
e+=5;
*e-=1;
e-=1;
}
*e+=1;
printf("%i",*e);
printf(" %c",e);
}
gì nó là nghĩa vụ phải làm là:
- Đặt phần tử đầu tiên đến 8
- Sau đó, trong khi các yếu tố hiện tại không phải là zero,
- di chuyển đến các tế bào tiếp theo
- Thêm 5 đến nó
- Move lại 012.
- Trừ một. (Điều này lặp đi lặp lại 8 lần vì các thử nghiệm trong khi sẽ thất bại khi nó đã trừ người cuối cùng)
- hiển thị vị trí của con trỏ
- hiển thị các nội dung của mảng con trỏ trỏ đến (Tôi hy vọng)
Những gì nó:
1 Φ
như trái ngược với
40 (
^^ 8 x 5 = 40, vì vậy đó là nội dung hiển thị.
Bất kỳ mẹo/đề xuất/phê bình nào được chấp nhận.
bạn gần như đã có nó nhưng khi bạn xác định một con trỏ với * e bạn không cần phải tham khảo nó như * e chỉ e và cung cấp cho bạn địa chỉ bộ nhớ của con trỏ. Khi bạn * e nó một lần nữa như với * e + = 8 bạn đang dereferencing nó và thêm 8 vào giá trị ASCII char đó là có làm cho nó một số char khác. – L7ColWinters
Lưu ý rằng 'main' phải trả về' int' (thường là 0). –
Bạn cũng nên khởi tạo mảng của mình. Không đảm bảo rằng * e là 8 sau '* e + = 8;' – user606723