Other than this notational distinction, a two-dimensional array can be dịch - Other than this notational distinction, a two-dimensional array can be Việt làm thế nào để nói

Other than this notational distinct

Other than this notational distinction, a two-dimensional array can be treated in much the same way as in other languages. Elements are stored by rows, so the rightmost subscript, or column, varies fastest as elements are accessed in storage order. An array is initialized by a list of initializers in braces; each row of a two-dimensional array is initialized by a corresponding sub-list. We started the array daytab with a column of zero so that month numbers can run from the natural 1 to 12 instead of 0 to 11. Since space is not at a premium here, this is clearer than adjusting the indices. If a two-dimensional array is to be passed to a function, the parameter declaration in the function must include the number of columns; the number of rows is irrelevant, since what is passed is, as before, a pointer to an array of rows, where each row is an array of 13 ints. In this particular case, it is a pointer to objects that are arrays of 13 ints. Thus if the array daytab is to be passed to a function f, the declaration of f would be: f(int daytab[2][13]) { ... } It could also be f(int daytab[][13]) { ... } since the number of rows is irrelevant, or it could be f(int (*daytab)[13]) { ... } which says that the parameter is a pointer to an array of 13 integers. The parentheses are necessary since brackets [] have higher precedence than *. Without parentheses, the declaration int *daytab[13] is an array of 13 pointers to integers. More generally, only the first dimension (subscript) of an array is free; all the others have to be specified. Section 5.12 has a further discussion of complicated declarations. Exercise 5-8. There is no error checking in day_of_year or month_day. Remedy this defect.
5.8 Initialization of Pointer Arrays Consider the problem of writing a function month_name(n), which returns a pointer to a character string containing the name of the n-th month. This is an ideal application for an internal static array. month_name contains a private array of character strings, and returns a pointer to the proper one when called. This section shows how that array of names is initialized. The syntax is similar to previous initializations:
/* month_name: return name of n-th month */ The declaration of name, which is an array of character pointers, is the same as lineptr in the sorting example. The initializer is a list of character strings; each is assigned to the corresponding position in the array. The characters of the i-th string are placed somewhere, and a pointer to them is stored in name[i]. Since the size of the array name is not specified, the compiler counts the initializers and fills in the correct number.
5.9 Pointers vs. Multi-dimensional Arrays Newcomers to C are sometimes confused about the difference between a two-dimensional array and an array of pointers, such as name in the example above. Given the definitions
int a[10][20]; int *b[10]; then a[3][4] and b[3][4] are both syntactically legal references to a single int. But a is a true two-dimensional array: 200 int-sized locations have been set aside, and the conventional rectangular subscript calculation 20 * row +col is used to find the element a[row,col]. For b, however, the definition only allocates 10 pointers and does not initialize them; initialization must be done explicitly, either statically or with code. Assuming that each element of b does point to a twentyelement array, then there will be 200 ints set aside, plus ten cells for the pointers. The important advantage of the pointer array is that the rows of the array may be of different lengths.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Khác với sự phân biệt mô này, một mảng hai chiều có thể được điều trị trong cùng một cách như trong các ngôn ngữ khác. Yếu tố được lưu trữ bởi hàng, do đó, chỉ số bìa phải, hoặc cột, thay đổi nhanh nhất vì yếu tố được truy cập trong thứ tự lưu trữ. Một mảng được khởi tạo bởi một danh sách các initializers ở trong ngoặc; mỗi hàng của một mảng hai chiều được khởi tạo bởi một danh sách tương ứng phó. Chúng tôi bắt đầu mảng daytab với một cột zero do đó số lượng tháng có thể chạy từ 1 đến 12 tự nhiên thay vì 0-11. Từ space không phải là một phí bảo hiểm ở đây, điều này là rõ ràng hơn so với việc điều chỉnh các chỉ số. Nếu một mảng hai chiều là được truyền cho một hàm, tuyên bố tham số trong các chức năng phải bao gồm số lượng các cột; số hàng là không thích hợp, vì những gì được thông qua, như trước đây, một con trỏ đến một loạt các hàng, mỗi hàng ở đâu một mảng 13 một. Trong trường hợp cụ thể này, nó là một con trỏ đến các đối tượng là mảng của 13 một. Do đó nếu daytab mảng để được truyền cho một hàm f, tuyên bố của f sẽ là: f (int daytab[2][13]) {...} Nó cũng có thể là f (int daytab[][13]) {...} kể từ khi số hàng là không thích hợp, hoặc nó có thể là f (int (*daytab)[13]) {...} mà nói rằng các tham số là một con trỏ chỉ tới một mảng số nguyên 13. Các dấu ngoặc đơn là cần thiết vì dấu ngoặc vuông [] có các ưu tiên cao hơn *. Mà không có dấu ngoặc đơn, kê khai int * daytab [13] là một mảng của các con trỏ 13 số nguyên. Nói chung, chỉ đầu tiên kích thước (chỉ số) của một mảng là miễn phí; Tất cả những người khác có thể được xác định. Phần 5.12 có một cuộc thảo luận thêm trong tờ khai phức tạp. Tập 5-8. Có là không có lỗi, kiểm tra tại day_of_year hoặc month_day. Khắc phục lỗi này. 5.8 các khởi tạo của con trỏ mảng xem xét vấn đề của việc viết một chức năng month_name(n), mà trả về một con trỏ đến một nhân vật chuỗi chứa tên của n-th tháng. Đây là một ứng dụng lý tưởng cho một mảng tĩnh bên trong. month_name có một mảng riêng của chuỗi ký tự, và trả về một con trỏ đến một thích hợp khi được gọi là. Phần này cho thấy làm thế nào là mảng tên được khởi tạo. Cú pháp cũng tương tự như trước đây initializations: / * month_name: trở về tên của n-th tháng * / khai báo tên, là một mảng của các con trỏ ký tự, là giống như lineptr trong ví dụ sắp xếp. The initializer là một danh sách các chuỗi ký tự; từng được gán cho các vị trí tương ứng trong mảng đó. Các nhân vật của chuỗi lần thứ i được đặt ở một nơi, và một con trỏ đến chúng được lưu trữ trong tên [i]. Kể từ khi kích thước của mảng tên không được chỉ định, trình biên dịch đếm các initializers và điền vào số chính xác. 5.9 liên kết vs Multi-dimensional mảng người mới đến C đôi khi bị nhầm lẫn về sự khác biệt giữa một mảng hai chiều và một mảng của các con trỏ, chẳng hạn như tên trong ví dụ ở trên. Đưa ra những định nghĩa int a [10] [20]; int * b [10]; sau đó một [3] [4] và b [3] [4] là cả hai tham chiếu pháp lý cú pháp để đơn int. Nhưng một là một mảng hai chiều thực sự: 200 int có kích thước vị trí đã là đặt sang một bên, và tính toán subscript hình chữ nhật thông thường 20 * hàng + col được sử dụng để tìm các phần tử a [row, col]. Cho b, Tuy nhiên, định nghĩa chỉ phân bổ 10 con trỏ và không khởi tạo cho họ; khởi tạo phải được thực hiện một cách rõ ràng, tĩnh hoặc với mã. Giả sử rằng mỗi phần tử của b trỏ đến một mảng twentyelement, sau đó sẽ có 200 một sang một bên, cộng với các tế bào mười cho các con trỏ. Lợi thế quan trọng của con trỏ mảng là các hàng của các mảng có độ dài khác nhau.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Khác với phân biệt kí hiệu này, một mảng hai chiều có thể được xử lý theo cách tương tự như trong các ngôn ngữ khác. Các yếu tố được lưu trữ bởi hàng, vì vậy các subscript ngoài cùng bên phải, hoặc cột, thay đổi nhanh như các yếu tố được truy cập để lưu trữ. Một mảng được khởi tạo bởi một danh sách các initializers trong dấu ngoặc; mỗi hàng của mảng hai chiều được khởi tạo bởi một tiểu danh sách tương ứng. Chúng tôi bắt đầu daytab mảng với một cột bằng không vì vậy mà số tháng có thể chạy từ tự nhiên 1-12 thay vì từ 0 đến 11. Kể từ khi không gian không phải là một bảo hiểm ở đây, điều này là rõ ràng hơn so với việc điều chỉnh các chỉ số. Nếu một mảng hai chiều là để được thông qua một chức năng, khai báo tham số trong hàm phải bao gồm số lượng các cột; số hàng là không thích hợp, vì những gì được thông qua là, như trước đây, một con trỏ tới một mảng của các hàng, nơi mỗi hàng là một mảng của 13 ints. Trong trường hợp này, nó là một con trỏ đến đối tượng là các mảng của 13 ints. Vì vậy, nếu các daytab mảng là để được thông qua một hàm f, việc kê khai của f sẽ là: f (int daytab [2] [13]) {...} Nó cũng có thể là f (int daytab [] [13] ) {...} vì số hàng là không thích hợp, hoặc nó có thể là f (int (* daytab) [13]) {...} mà nói rằng tham số là con trỏ đến một mảng của 13 số nguyên. Các dấu ngoặc đơn là cần thiết vì dấu ngoặc [] có độ ưu tiên cao hơn *. Nếu không có dấu ngoặc đơn, tờ khai int * daytab [13] là một mảng 13 con trỏ đến số nguyên. Tổng quát hơn, chỉ có chiều kích đầu tiên (subscript) của một mảng là miễn phí; tất cả những người khác phải được xác định. Mục 5.12 có thảo luận thêm về tờ khai phức tạp. Tập thể dục 5-8. Không có kiểm tra lỗi trong day_of_year hoặc MONTH_DAY. Khắc phục lỗi này.
5.8 Khởi tạo Pointer Mảng Hãy xem xét các vấn đề của việc viết một chức năng MONTH_NAME (n), trong đó trả về một con trỏ đến một chuỗi ký tự chứa tên của tháng n-thứ. Đây là một ứng dụng lý tưởng cho một mảng nội tĩnh. MONTH_NAME chứa một mảng riêng của chuỗi ký tự, và trả về một con trỏ đến đúng một khi được gọi. Phần này cho thấy làm thế nào mà mảng tên được khởi tạo. Cú pháp tương tự như khởi tạo trước đó:
/ * MONTH_NAME: tên trở lại của tháng n-th * / Tờ khai tên, đó là một mảng của con trỏ ký tự, cũng giống như lineptr trong ví dụ phân loại. Việc khởi tạo là một danh sách các chuỗi ký tự; từng được gán cho các vị trí tương ứng trong mảng. Các ký tự của chuỗi thứ i được đặt ở đâu đó, và một con trỏ để chúng được lưu trữ trong tên [i]. Vì kích thước của mảng tên là không quy định, trình biên dịch đếm initializers và điền vào số lượng chính xác.
5.9 Con trỏ vs đa chiều Mảng Người mới đến C là đôi khi nhầm lẫn về sự khác biệt giữa một mảng hai chiều và một mảng của con trỏ, như tên trong ví dụ trên. Với các định nghĩa
int a [10] [20]; int * b [10]; sau đó một [3] [4] và b [3] [4] đều là tài liệu tham khảo cú pháp pháp lý để một int duy nhất. Nhưng một là một mảng hai chiều đúng: 200 điểm int có kích thước đã được đặt sang một bên, và hình chữ nhật subscript thường tính 20 * hàng + col được sử dụng để tìm các phần tử a [hàng, col]. Cho b, tuy nhiên, định nghĩa chỉ giao 10 con trỏ và không khởi tạo chúng; khởi tạo phải được thực hiện một cách rõ ràng, hoặc là tĩnh hoặc với mã. Giả sử rằng mỗi phần tử của b không trỏ đến một mảng twentyelement, sau đó sẽ có 200 ints đặt sang một bên, cộng với một tế bào cho con trỏ. Lợi thế quan trọng của mảng con trỏ là các hàng của mảng có thể có độ dài khác nhau.
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: