The function getline is from Section 1.9. The main new thing is the de dịch - The function getline is from Section 1.9. The main new thing is the de Việt làm thế nào để nói

The function getline is from Sectio

The function getline is from Section 1.9. The main new thing is the declaration for lineptr: char *lineptr[MAXLINES] says that lineptr is an array of MAXLINES elements, each element of which is a pointer to a char. That is, lineptr[i] is a character pointer, and *lineptr[i] is the character it points to, the first character of the i-th saved text line. Since lineptr is itself the name of an array, it can be treated as a pointer in the same manner as in our earlier examples, and writelines can be written instead as
printf("%s
", *lineptr++); } Initially, *lineptr points to the first line; each element advances it to the next line pointer while nlines is counted down. With input and output under control, we can proceed to sorting. The quicksort from Chapter 4 needs minor changes: the declarations have to be modified, and the comparison operation must be done by calling strcmp. The algorithm remains the same, which gives us some confidence that it will still work.
qsort(v, last+1, right); } Similarly, the swap routine needs only trivial changes:
} Since any individual element of v (alias lineptr) is a character pointer, temp must be also, so one can be copied to the other. Exercise 5-7. Rewrite readlines to store lines in an array supplied by main, rather than calling alloc to maintain storage. How much faster is the program?
5.7 Multi-dimensional Arrays C provides rectangular multi-dimensional arrays, although in practice they are much less used than arrays of pointers. In this section, we will show some of their properties. Consider the problem of date conversion, from day of the month to day of the year and vice versa. For example, March 1 is the 60th day of a non-leap year, and the 61st day of a leap year. Let us define two functions to do the conversions: day_of_year converts the month and day into the day of the year, and month_day converts the day of the year into the month and day. Since this latter function computes two values, the month and day arguments will be pointers: month_day(1988, 60, &m, &d) sets m to 2 and d to 29 (February 29th). These functions both need the same information, a table of the number of days in each month (``thirty days hath September ...''). Since the number of days per month differs for leap years and non-leap years, it's easier to separate them into two rows of a two-dimensional array than to keep track of what happens to February during computation. The array and the functions for performing the transformations are as follows:
12:22:23 ] *pday = yearday; } Recall that the arithmetic value of a logical expression, such as the one for leap, is either zero (false) or one (true), so it can be used as a subscript of the array daytab. The array daytab has to be external to both day_of_year and month_day, so they can both use it. We made it char to illustrate a legitimate use of char for storing small non-character integers. daytab is the first two-dimensional array we have dealt with. In C, a two-dimensional array is really a one-dimensional array, each of whose elements is an array. Hence subscripts are written as
daytab[i][j]
49 | P a g e

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 contain
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Getline chức năng là từ phần 1.9. Điều mới chính là bản tuyên ngôn cho lineptr: char * lineptr [MAXLINES] nói rằng lineptr là một mảng của các yếu tố MAXLINES, mỗi yếu tố trong đó là một con trỏ chỉ tới char một. Đó là, lineptr [i] là một con trỏ ký tự, và * lineptr [i] là nhân vật nó trỏ đến, ký tự đầu tiên của dòng i-th lưu văn bản. Kể từ khi lineptr là tên của một mảng, nó có thể được coi là một con trỏ trong cách tương tự như trong ví dụ trước đó của chúng tôi và writelines có thể được viết thay vào đó là printf ("%s
", * lineptr ++); } Ban đầu, * lineptr trỏ tới dòng đầu tiên; mỗi yếu tố tiến bộ nó để con trỏ dòng kế tiếp trong khi nlines tính. Với đầu vào và đầu ra dưới sự kiểm soát, chúng tôi có thể tiến hành phân loại. Hay Hoaresort từ chương 4 cần thay đổi nhỏ: Các tờ khai đã được thay đổi, và thao tác so sánh phải được thực hiện bằng cách gọi strcmp. Các thuật toán vẫn như nhau, mà cho chúng ta một số sự tự tin rằng nó sẽ vẫn làm việc. qsort (v, cuối + 1, bên phải); } Tương tự như vậy, những thói quen trao đổi nhu cầu chỉ thay đổi nhỏ: } Từ bất kỳ yếu tố cá nhân của v (bí danh lineptr) là một con trỏ ký tự, tạm thời phải ngoài ra, do đó, một trong những có thể được sao chép đến khác. Tập 5-7. Viết lại readlines để lưu trữ các dòng trong một mảng được cung cấp bởi chính, chứ không phải là gọi danh để duy trì lí. Nhanh hơn bao nhiêu là chương trình? 5.7 đa chiều mảng C cung cấp các mảng đa chiều hình chữ nhật, mặc dù trong thực tế, họ đang ít sử dụng hơn mảng của các con trỏ. Trong phần này, chúng tôi sẽ hiển thị một số tài sản của họ. Hãy xem xét các vấn đề về chuyển đổi ngày, từ ngày của tháng ngày trong năm và ngược lại. Ví dụ, 1 tháng 3 là 60 ngày của một không-năm nhuận, 61st ngày trong một năm. Hãy để chúng tôi xác định hai chức năng để làm các chuyển đổi: day_of_year chuyển đổi tháng và ngày vào ngày trong năm, và month_day chuyển đổi ngày của năm vào tháng và ngày. Kể từ khi chức năng sau này tính hai giá trị, các đối số tháng và ngày sẽ là liên kết: month_day (1988, 60, và m & d) đặt m 2 và d để 29 (29 tháng 2). Các chức năng này cả hai cần các thông tin tương tự, một bảng số ngày trong mỗi tháng ('' ba mươi ngày hath ngày...''). Vì số lượng ngày mỗi tháng khác trong năm nhuận và phòng không leap năm, nó dễ dàng hơn để tách chúng thành hai hàng một mảng hai chiều hơn để theo dõi của những gì sẽ xảy ra cho tháng hai trong tính toán. Các mảng và các chức năng để thực hiện các phép biến đổi là như sau: 12: 22:23] * pday = yearday; } Nhớ lại rằng giá trị số học của một biểu thức logic, chẳng hạn như một cho bước nhảy vọt, là 0 (false) hoặc một (đúng), do đó, nó có thể được sử dụng như một chỉ số của mảng daytab. Daytab mảng đã được bên ngoài để day_of_year và month_day, do đó, cả hai họ có thể sử dụng nó. Chúng tôi đã làm cho nó char để minh họa một sử dụng hợp pháp của char để lưu trữ các số nguyên vật nhỏ. daytab là mảng hai chiều đầu tiên chúng tôi có xử lý. C, một mảng hai chiều thực sự là một mảng hết, mỗi người trong số các yếu tố mà là một mảng. Do đó chỉ được viết là daytab [i] [j] 49 | P g e 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 khởi tạo 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
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Các chức năng getline là từ mục 1.9. Điều mới mẻ chính là khai lineptr: char * lineptr [Maxlines] nói rằng lineptr là một mảng của các yếu tố Maxlines, mỗi phần tử trong đó là một con trỏ đến một char. Đó là, lineptr [i] là một con trỏ ký tự, và * lineptr [i] là kí tự nó trỏ tới, các ký tự đầu tiên của dòng văn bản thứ i lưu. Kể từ lineptr bản thân nó là tên của một mảng, nó có thể được coi như là một con trỏ theo cách tương tự như trong ví dụ trước đây của chúng tôi, và writelines có thể được viết thay vì như
printf ( "% s n", * lineptr ++); } Ban đầu, * điểm lineptr vào dòng đầu tiên; mỗi phần tử tiến nó để con trỏ dòng tiếp theo trong khi NLINES lối vào được tính xuống. Với đầu vào và đầu ra được kiểm soát, chúng tôi có thể tiến hành phân loại. Các quicksort từ Chương 4 cần thay đổi nhỏ: tờ khai phải được sửa đổi, và các hoạt động so sánh phải được thực hiện bằng cách gọi strcmp. Các thuật toán vẫn giữ nguyên, trong đó cung cấp cho chúng tôi một số tin tưởng rằng nó sẽ vẫn làm việc.
Qsort (v, cuối cùng + 1, bên phải); } Tương tự như vậy, sự trao đổi thường xuyên các nhu cầu chỉ thay đổi nhỏ:
} Vì bất kỳ yếu tố cá nhân của v (bí danh lineptr) là một con trỏ ký tự, tạm thời phải có thêm, vì vậy ai có thể được sao chép vào khác. Tập thể dục 5-7. Viết lại readlines để lưu trữ các dòng trong một mảng được cung cấp bởi chính, thay vì gọi alloc để duy trì lưu trữ. Làm thế nào nhanh hơn nhiều là chương trình?
5,7 đa chiều Mảng C cung cấp các mảng đa chiều hình chữ nhật, mặc dù trong thực tế họ là ít hơn nhiều so với sử dụng các mảng của con trỏ. Trong phần này, chúng ta sẽ thấy một số tài sản của họ. Hãy xem xét các vấn đề chuyển đổi ngày, từ ngày của tháng cho đến ngày của năm lại và ngược. Ví dụ, ngày 01 tháng 3 là ngày thứ 60 của một năm không nhuận, và ngày thứ 61 của một năm nhuận. Hãy để chúng tôi xác định hai chức năng để làm việc chuyển đổi: chuyển đổi day_of_year tháng và ngày vào các ngày trong năm, và MONTH_DAY chuyển đổi các ngày trong năm vào tháng và ngày. Vì chức năng sau này tính hai giá trị, tháng và ngày đối số sẽ được trỏ: MONTH_DAY (1988, 60, & m, d &) đặt m 2 và d đến 29 (ngày 29 tháng 2). Các chức năng này đều cần cùng một thông tin, một bảng của số ngày trong mỗi tháng ( ` 'ba mươi ngày thì được sự tháng chín ...' '). Kể từ khi số ngày mỗi tháng khác nhau cho năm nhuận và năm không nhuận, nó dễ dàng hơn để phân chia chúng thành hai hàng của một mảng hai chiều hơn để theo dõi những gì xảy ra đến tháng trong tính toán. Mảng và các chức năng để thực hiện các phép biến đổi như sau:
00:22:23] * pday = yearday; } Nhớ lại rằng các giá trị số học của một biểu thức logic, chẳng hạn như một cho bước nhảy vọt, hoặc là không (false) hoặc một (true), vì vậy nó có thể được sử dụng như một subscript của daytab mảng. Các daytab mảng có đến được bên ngoài để cả hai day_of_year và MONTH_DAY, vì vậy cả hai đều có thể sử dụng nó. Chúng tôi đã làm cho nó char để minh họa việc sử dụng hợp pháp của char để lưu trữ các số nguyên không nhân vật nhỏ. daytab là mảng hai chiều đầu tiên, chúng tôi đã xử lý. Trong C, một mảng hai chiều thực sự là một mảng một chiều, mỗi phần tử của một mảng. Do đó subscript được viết như
daytab [i] [j]
49 | P tuổi khác hơn 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


đ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 ©2024 I Love Translation. All reserved.

E-mail: