Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: em không hiểu cách khai báo char *bachuso(unsigned int n), giải thích giúp em với??

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    9

    Red face em không hiểu cách khai báo char *bachuso(unsigned int n), giải thích giúp em với??

    khai báo code này // char *bachuso(unsigned int n)
    hiểu thế nào các anh/chị???

    trong bài đọc số này
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4. char s[50] = "";
    5.  
    6. char *bachuso(unsigned int n)
    7. {
    8.   char kyso[10][5]= {"", "mot", "hai", "ba", "bon", "nam", "sau",
    9.                     "bay", "tam", "chin"};
    10.   int donvi, chuc, tram;
    11.  
    12.   s[0] = 0;
    13.   donvi = n % 10;
    14.   n /= 10;
    15.   chuc = n % 10;
    16.   tram = n / 10;
    17.   if (tram > 0)
    18.   {
    19.     strcat(s, kyso[tram]);
    20.     strcat(s, " tram ");
    21.   }
    22.   if (chuc > 0)
    23.   {
    24.     if (chuc== 1)
    25.        strcat(s, "muoi ");
    26.     else
    27.     {
    28.        strcat(s, kyso[chuc]);
    29.        strcat(s, " muoi ");
    30.     }
    31.   }
    32.   if (donvi > 0)
    33.   {
    34.      if (chuc == 0 && tram != 0)
    35.        strcat(s, "le ");
    36.      if (donvi == 1)
    37.        strcat(s, "mot");
    38.      else if (donvi == 5 && (chuc != 0 || tram != 0))
    39.        strcat(s, "lam");
    40.      else if (donvi == 5 && (chuc = 0 || tram != 0))
    41.        strcat(s, "nam");
    42.      else
    43.        strcat(s, kyso[donvi]);
    44.   }
    45.   return s;
    46. }
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 17-03-2009 lúc 10:42 PM.

  2. #2
    No Avatar
    hvhien Khách

    char * ở đây dùng để khai báo một con trỏ kiểu char ,nó sẽ tương đương với mình khai báo một xâu
    char *bachuso(unsigned int n)
    hàm này trả về một xâu kí tự nên phải khai báo kiểu char *

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    9

    em mới đọc tài liệu thấy có khái niệm con trỏ của hàm
    vậy ở đây là dạng khai báo con trỏ của hàm
    em chưa rành về con trỏ lắm, thôi em tạm chấp nhận vậy hả các anh/chị

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi bethaophuong2004 Xem bài viết
    em mới đọc tài liệu thấy có khái niệm con trỏ của hàm
    vậy ở đây là dạng khai báo con trỏ của hàm
    em chưa rành về con trỏ lắm, thôi em tạm chấp nhận vậy hả các anh/chị
    Bạn đừng hiểu nhầm qua khái niệm con trỏ hàm, trường hợp này ko phải đâu. (char *) là con trỏ kiểu char, nó là một kiểu dữ liệu giống như int, long, float vậy thôi. Thay vì hàm này trả về int, long, ... thì nó trả về kiểu là (char *)
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    03 2009
    Bài viết
    9

    anh ơi, con trỏ sao lại có đối số bên trong vậy hả, em không hiểu, chỉ có hàm mới có đối số mà, anh chỉ giáo dùm,

  6. #6
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Mặc định em không hiểu cách khai báo char *bachuso(unsigned int n), giải thích giúp em với??

    Mình xin nhắc lại 1 tí : định nghĩa hàm :
    <kiểu dữ liệu trả về> <tên hàm>(đối số 1,đối số 2....)
    Qua đó bạn có thể thấy "bachuso" chỉ là tên hàm, nó thực thi các lệnh trong đó, sau khi hoàn thành nhiệm vụ nó sẽ trả lại giá trị của hàm như đã khai báo là char * tức là 1 con trỏ trỏ đến kiểu char (như là 1 xâu ký tự)

  7. #7
    Ngày gia nhập
    02 2009
    Bài viết
    9

    Trích dẫn Nguyên bản được gửi bởi bethaophuong2004 Xem bài viết
    anh ơi, con trỏ sao lại có đối số bên trong vậy hả, em không hiểu, chỉ có hàm mới có đối số mà, anh chỉ giáo dùm,
    Đó không phải là con trỏ mà là hàm có kiểu trả về là con trỏ trỏ đến xâu kí tự.
    Bạn để ý xem có thấy câu lệnh " return s " ở cuối hàm không. Bạn đã trả về một xâu kí tự đấy thôi

  8. #8
    Ngày gia nhập
    10 2008
    Bài viết
    2

    cái lệnh strcat là sao vậy anh ?

  9. #9
    No Avatar
    hvhien Khách

    strcat(s1,s2) có nghĩa là ghép xâu s2 vào cuối xâu s1

  10. #10
    Ngày gia nhập
    03 2009
    Bài viết
    9

    anh ơi có khái niệm nào nói " con trỏ tới hàm không vậy"
    con trỏ trỏ tới hàm, "bachuso" là tên hàm, n là đối của hàm này (ok?)
    theo em nghĩ "*bachuso" sẽ giữ địa chỉ của xâu ký tự do hàm trả về phải không, sao mà lẫn quẩn quá, hề hề!!

Các đề tài tương tự

  1. Lập trình C thắc mắc về unsigned char trong C!
    Gửi bởi tqtrung13 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 10-04-2012, 10:00 AM
  2. Kỹ thuật C char và unsigned char....
    Gửi bởi lytieubinh_269 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 03-12-2011, 05:19 PM
  3. Bài tập C++ unsigned char c=200; c+=100 cout<<c =======??????????
    Gửi bởi dtk_37 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 13-04-2011, 10:19 PM
  4. Lập trình C++ Kiểu Unsigned Char là kiểu như thế nào?
    Gửi bởi mvmanh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 04-04-2011, 07:42 PM
  5. in ra màn hình Hexa Kiểu unsigned char* ?
    Gửi bởi honey trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 06-10-2010, 10:56 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn