Và nếu được thì coding và truyền như thế nào ?
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; }
Và nếu được thì coding và truyền như thế nào ?
Tham khảo cái này nè ^^
đối dòng lệnh
À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
)
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ụ:
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:char str[30]; //char *str[30];
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).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; }
ttecak ?
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ộ .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
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 ?