-
15-05-2014, 11:32 AM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi gialoui
View more random threads:
- ngắt thời gian trong máy tính, cần sự giúp đỡ?
- thủ thuật C
- Cho em hỏi về cách dùng hàm ShellExecute trong BC 3.1 !
- mở một tệp có sẵn rồi đếm số chữ, số kí tự, số dòng
- Viết Hàm Xóa Dòng Cuối Của File Bất Kì !!!
- Nhờ các bạn chạy kiểm tra dùm đoạn code
- hỏi về viết hàm C
- Bài tập C | Code bài tập quản lý sinh viên lỗi ở đâu, giúp mình sửa lỗi?
- Lỗi in giá trị khi xử lý với mảng và con trỏ
- dung con tro de nhap mot xau va chuyen doi xau
-
15-05-2014, 07:11 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Về việc sử dụng con trỏ cho chuỗi
Mình muốn đọc 1 chuỗi gồm tối đa 5 kí tự vào 1 vị trí trong mảng 1 chiều và phải có xài con trỏ để cấp phát động. Mình có làm thử ra như thế này:
Mã:struct SArray // Mảng lưu trữ tên ga { char *a[5]; int num; };
Mã:void initArray(SArray &ma) // khởi tạo cho mảng bao gồm số phần tử của mảng và con trỏ mảng { ma.a = NULL; -> Dòng báo lỗi ma.num = -1; }
-
15-05-2014, 07:45 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
a là hằng con trỏ => toạch [IMG]images/smilies/smile.png[/IMG]
-
15-05-2014, 07:53 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi prog10
-
15-05-2014, 07:55 PM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi gialoui
-
15-05-2014, 07:56 PM #6
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi prog10
-
16-05-2014, 03:23 PM #7
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi prog10
-
16-05-2014, 03:24 PM #8
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
fgets chuẩn hơn.
Lưu ý là khi bạn viết char* a[5] thì có nghĩa là mảng gồm 5 con trỏ char* (nói cách khác là 5 chuỗi) chứ ko phải là mảng các chuỗi 5 kí tự.
-
17-05-2014, 04:09 PM #9
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình muốn đọc 1 chuỗi gồm tối đa 5 kí tự vào 1 vị trí trong mảng 1 chiều và phải có xài con trỏ để cấp phát động.
Muốn làm như ý của bạn tức là số xâu không hạn chế và mỗi xâu chứa tối đa 5 phần tử thì bạn phải khai báo là
Mã:char **a;
Mã:char s[6] /* Phải là 6 phần tử, vì xâu chứa tối đa 5 ký tự + 1 ký tự kết thúc xâu (NULL) */ gets(s); a[i] = s; /* a[i] trỏ tới vùng nhớ của s */
-
18-05-2014, 08:31 AM #10
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
chuỗi tối đa 5 ký tự thì phải là char [6] chứ sao là char[5] được...
sửa lại thì đơn giản thêm dấu () thôi. C đọc từ phải qua trái. Viết là char* a[6] thì chương trình nó hiểu là a là mảng chứa 6 con trỏ trỏ tới ký tự. Viết là char (*a)[6] thì nó sẽ hiểu là a là con trỏ trỏ tới mảng chứa 6 ký tự (ưu tiên đọc trong () trước rồi mới phải qua trái sau)
char* a[6]
a: biến a là
đọc từ phải qua trái
[6]: mảng chứa 6
*: con trỏ trỏ tới
char: ký tự
ghép lại là "biến a là mảng chứa 6 con trỏ trỏ tới ký tự"
char (*a)[6]
a: biến a là
xét trong dấu () trước
*: con trỏ trỏ tới
xong trong dấu ngoặc, xét ra ngoài bình thường từ phải sang trái:
[6]: mảng chứa 6
char: ký tự
ghép lại là "biến a là con trỏ trỏ tới mảng chứa 6 ký tự"
ngữ pháp của C/C++.......
[/b] Tại Lương Sơn TV bạn sở hữu thể xem truyền hình trực tiếp bóng đá hôm nay các giải đấu to trong và ngoài nước. Lương Sơn TV ko chỉ đem lại những trận chiến mãn nhãn sở hữu chất lượng hình ảnh...
Các giải đấu không thể bỏ lỡ tại...