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

Đề tài: Tham số của main()

  1. #1
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Smile Tham số của main()

    Các bác cho em hỏi vấn đề này với ! Trong C có thể truyền tham số vào hàm main() khi bắt đầu thực thi chương trình như trong java không ?
    Ví dụ:

    Code:
    Trong java
    public class Test
    {
    	public static void main(String[] args)
    	{
    		System.out.println("Hello" + args[0]);
    	}
    }
    
    Trong C
    int main(char *args)
    {
    	printf("Hello %s\n",args);
    	return 0;
    }

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Và nếu được thì coding và truyền như thế nào ?

  3. #3
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Tham khảo cái này nè ^^

    đối dòng lệnh

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Àh vậy em hiểu rồi ! Bác cho em hỏi thêm câu này nhé (có thể hơi ngu mong bác thông cảm ). Theo như tham số truyền vào "char *arg[]" thì arg[] là một mảng con trỏ, vậy tại sao trong demo trên lại không thấy cấp phát bộ nhớ cho mảng con trỏ đó ! (có gì sai mong bác bỏ qua )

  5. #5
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Theo mình hiểu thì bản thân mảng cũng là 1 con trỏ rồi,ở đây ta khai báo chuỗi ví dụ:
    Code:
    char str[30];
    //char *str[30];
    tức là ta đã khai 1 mảng con trỏ với chuỗi rồi, bản thân cú pháp khi khai chuỗi sẽ có toán tử * trước chuỗi ngầm định đây là 1 con trỏ, khi bạn khai mảng 2 chiều rồi truyền giá trị qua hàm thì sẽ nhận thấy điểm khác biệt ở đây:
    Code:
    void Demo(char str[][30]){
    for(int i=0;i<30;i++)
    {
    printf("\n input your friend list: ");
    fflush(stdin);
    gets(str[i]);// ở đây vì là con trỏ nên sẽ truyền mảng đc biểu diễn như mảng 1 chiều nhưng thực chất nó là mảng 2 chiều
    }
    }
    
    int main()
    {
    char str[30][30];
    Demo(str);
    return 1;
    }
    Hiểu biết có hạn nên không thể diễn tả cho bạn hiểu hy vọng code trên giúp bạn suy ra lý do tại sao lại không cấp phát bộ nhớ cho con trỏ.( Khi khai mảng chính là ta đã cấp phát bộ nhớ cho nó chỉ khác là bộ nhớ static thay vì dynamic).
    ttecak ?

  6. #6
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Mặc định Tham số của main()

    Khi khai mảng chính là ta đã cấp phát bộ nhớ cho nó chỉ khác là bộ nhớ static thay vì dynamic
    Theo mình thì ko hẳn như vậy , tuỳ vào ta khai báo mảng ở đâu trong chương trình của ta nữa mà nó là toàn bộ hay cục bộ .

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Bạn Phương không hiểu ý mình rồi, cái mình nói ở đây không phải là toàn cục hay cục bộ mà là nó là mảng tĩnh hay mảng động(static là tĩnh, dynamic là động), mảng động là mảng có thể tăng thêm kích thước bằng hàm realloc(void) được.Còn từ mảng toàn cục là global array và cục bộ là local array ^^
    ttecak ?

  8. #8
    No Avatar
    C#Novice Khách

    Trích dẫn Nguyên bản được gửi bởi Hok_bik_zi Xem bài viết
    Àh vậy em hiểu rồi ! Bác cho em hỏi thêm câu này nhé (có thể hơi ngu mong bác thông cảm ). Theo như tham số truyền vào "char *arg[]" thì arg[] là một mảng con trỏ, vậy tại sao trong demo trên lại không thấy cấp phát bộ nhớ cho mảng con trỏ đó ! (có gì sai mong bác bỏ qua )
    Tại vì arg ở đây là parameter , nó sẽ trỏ tới một vùng nhớ định sẵn mà ta sẽ nhận data từ vùng nhớ đó nên đâu có liên quan gì đến việc phải cấp phát bộ nhớ.

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

  1. Truyền tham số vào Main trong C#, so sánh với C
    Gửi bởi azurelonely trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 19-09-2011, 09:29 PM
  2. Kỹ thuật C Thắc mắc hàm tham số hàm main và dấu #
    Gửi bởi trumdkny trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 19-08-2010, 02:41 PM
  3. code truyền tham số vào hàm main(). sửa giùm em
    Gửi bởi vanmeo trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 18
    Bài viết cuối: 15-06-2010, 06:16 PM
  4. Xin tài liệu về cách truyền tham số cho hàm main()
    Gửi bởi vanmeo trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 1
    Bài viết cuối: 13-06-2010, 08:47 PM
  5. Hàm main có tham số - char *argv[] ??
    Gửi bởi lostninja trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 19-03-2010, 06:45 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