logo

C'de Dinamik Dizi

Dinamik diziler programlamada aşağıdakilere izin veren güçlü bir veri yapısıdır: yaratmak Ve manipüle etmek çalışma zamanı boyunca değişen boyutlarda diziler. C'de dinamik diziler, işaretçiler ve bellek ayırma işlevleri kullanılarak uygulanır; bu da onları bellek kullanımını optimize etmek ve verimli programlar oluşturmak için değerli bir araç haline getirir. Bu makalede C'deki dinamik diziler kavramını, avantajlarını ve dezavantajlarını ve bunların nasıl oluşturulup değiştirileceğini inceleyeceğiz.

Dinamik Dizileri Anlamak

A dinamik dizi sırasında boyutu değiştirilebilen bir dizidir. Çalışma süresi . Farklı statik diziler Derleme zamanında belirlenen sabit bir boyuta sahip olan dinamik diziler, gerektiğinde yeniden boyutlandırılabilir. Dizinin boyutu depolanan veri miktarına uyacak şekilde ayarlanabildiğinden, daha fazla esneklik ve daha iyi bellek yönetimi sağlar.

Dinamik diziler işaretçiler ve bellek ayırma işlevleri kullanılarak uygulanır. C'de en sık kullanılan bellek ayırma işlevleri şunlardır: malloc() , kalloc() , Ve realloc() . Bu işlevler, dinamik dizilerin oluşturulması ve işlenmesi için gerekli olan çalışma zamanı sırasında belleğin tahsis edilmesine ve tahsisinin kaldırılmasına olanak tanır.

Dinamik Dizilerin Avantajları

C'de dinamik diziler kullanmanın çeşitli avantajları vardır. Ana avantajlardan bazıları şunlardır:

  1. Ana avantajlardan biri, daha iyi bellek yönetimine izin vermeleridir. Statik dizilerde dizinin boyutu sabit bu, belleğin tüm dizi için aynı anda tahsis edildiği anlamına gelir. Dizi tam olarak kullanılmazsa belleğin boşa harcanmasına yol açabilir.
  2. Dinamik dizilerde bellek yalnızca gerektiği kadar tahsis edilir ve bu da daha verimli bellek kullanımına yol açabilir.
  3. Dinamik diziler ayrıca daha fazla esnekliğe olanak tanır.
  4. Özellikle çalışma zamanı sırasında dizinin boyutunun değişmesi gerekiyorsa, bu durum sınırlayıcı olabilir.
  5. Dinamik diziler, dizinin boyutunun gerektiği gibi ayarlanmasına olanak tanır, bu da programları daha çok yönlü ve uyarlanabilir hale getirebilir.

Dinamik Dizilerin Dezavantajları

Dinamik dizilerin birçok avantajının yanı sıra bazı dezavantajları da bulunmaktadır. Başlıca dezavantajlarından bazıları şunlardır:

rdbms'deki birleştirme türleri
  1. Ana dezavantajlardan biri, uygulanmasının statik dizilere göre daha karmaşık olabilmesidir.
  2. Dinamik diziler aşağıdakilerin kullanılmasını gerektirir: işaretçiler Ve bellek ayırma işlevleri anlaşılması ve kullanılması, statik dizilerin basit dizi söz diziminden daha zor olabilir.
  3. Dinamik diziler ayrıca statik dizilerden daha yavaş olabilir. Bellek tahsisi ve serbest bırakma söz konusu olduğundan, dinamik dizilerin kullanılmasıyla ilişkili bir genel gider maliyeti vardır. Bu genel gider maliyeti, bazı durumlarda dinamik dizilerin statik dizilerden daha yavaş olmasına neden olabilir.

C'de Dinamik Diziler Oluşturma

C'de dinamik bir dizi oluşturmak için şunu kullanmalıyız: bellek ayırma işlevleri diziye bellek ayırmak için. C'de en sık kullanılan bellek ayırma işlevleri şunlardır: malloc(), calloc() , Ve realloc() . Malloc() kullanarak dinamik bir dizinin nasıl oluşturulacağına dair bir örnek:

java tostring
 int *arr; int size = 10; arr = (int*) malloc(size * sizeof(int)); 

Açıklama:

Bu örnekte, adı verilen bir tamsayı dizisine yönelik bir işaretçi bildiriyoruz. varış . Ayrıca adında bir tamsayı değişkeni de bildiririz. boyut oluşturmak istediğimiz dizinin boyutunu temsil eder. Bundan sonra şunu kullanıyoruz: malloc() dizi için bellek ayırma işlevi. malloc() işlev dizinin boyutunu alır (içinde bayt ) argümanı olarak kullanırız, bu nedenle dizinin boyutunu bir tam sayının boyutuyla çarparız (ki bu 4 bayt çoğu sistemde) toplam boyutu bayt cinsinden elde etmek için.

C'de Dinamik Dizileri Değiştirmek

C'de dinamik bir dizi oluşturduğumuzda, onu tıpkı diğer diziler gibi işleyebiliriz. Dizi sözdizimini kullanarak dizinin tek tek öğelerine erişebiliriz:

 arr[0] = 5; 

Bu örnekte dizinin ilk elemanını şu şekilde ayarladık: 5 .

Biz de kullanabiliriz döngüler dizi üzerinde yineleme yapmak için:

 for (int i = 0; i<size; i++) { arr[i]="i" * 2; } < pre> <p>In this example, we use a <strong> <em>for loop</em> </strong> to set each element of the array to twice its index.</p> <p>To resize a dynamic array in C, we can use the <strong> <em>realloc()</em> </strong> function. The <strong> <em>realloc()</em> </strong> function takes two arguments: a <strong> <em>pointer</em> </strong> to the original memory block and the <strong> <em>new size</em> </strong> of the memory block. Here is an example of how to resize a dynamic array using realloc():</p> <pre> int new_size = 20; arr = (int*) realloc(arr, new_size * sizeof(int)); </pre> <p>In this example, we declare a new integer variable called <strong> <em>new_size</em> </strong> , which represents the new size of the array. After that, we use the <strong> <em>realloc() function</em> </strong> to resize the array. The <strong> <em>realloc() function</em> </strong> takes the pointer to the original memory block (in this case, <strong> <em>arr</em> </strong> ) and the <strong> <em>new size</em> </strong> of the memory block (in <strong> <em>bytes</em> </strong> ). We multiply the <strong> <em>new size</em> </strong> of the array by the <strong> <em>size</em> </strong> of an <strong> <em>integer</em> </strong> to get the total size in bytes.</p> <p>It is important to note that when we resize a dynamic array using <strong> <em>realloc()</em> </strong> , any existing data in the array will be preserved. If the new size of the array is larger than the original size, the new elements will be uninitialized.</p> <p>To free the memory used by a dynamic array in C, we can use the <strong> <em>free()</em> </strong> function. The <strong> <em>free()</em> </strong> function takes a pointer to the memory block that was allocated using <strong> <em>malloc()</em> </strong> , <strong> <em>calloc()</em> </strong> , or <strong> <em>realloc()</em> </strong> . Here is an example of how to free the memory used by a dynamic array:</p> <pre> free(arr); </pre> <p>In this example, we use the <strong> <em>free() function</em> </strong> to free the memory used by the dynamic array <strong> <em>arr</em> </strong> . It is important to note that once we have freed the memory used by a dynamic array, we should not attempt to access the elements of the array.</p> <h3>Some more examples of using dynamic arrays in C:</h3> <p> <strong>Adding Elements to a Dynamic Array:</strong> </p> <p>One of the main benefits of using a dynamic array is the ability to add elements to the array as needed. Here is an example of how to add an element to a dynamic array:</p> <pre> #include #include int main() { int size = 5; int *arr = (int*) malloc(size * sizeof(int)); int i; for(i = 0; i<size; i++) { arr[i]="i;" } add a new element to the array size++; arr="(int*)" realloc(arr, size * sizeof(int)); arr[size-1]="i;" for(i="0;" i< size; printf('%d ', arr[i]); free(arr); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 5 </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first create a dynamic array <strong> <em>arr</em> </strong> of size <strong> <em>5</em> </strong> using the <strong> <em>malloc()</em> </strong> function. After that, we set each element of the array to its index using a <strong> <em>for loop</em> </strong> . To add a new element to the array, we increment the size of the array by one and use the <strong> <em>realloc() function</em> </strong> to resize the array. We set the value of the last element in the array to the current value of <strong> <em>i</em> </strong> . Finally, we print the contents of the array and free the memory used by the array.</p> <h3>Resizing a Dynamic Array</h3> <p>Another advantage of using a dynamic array is the ability to resize the array as needed. Here is an example of how to resize a dynamic array:</p> <pre> #include #include int main() { int size = 5; int *arr = (int*) malloc(size * sizeof(int)); int i; for(i = 0; i<size; i++) { arr[i]="i;" } resize the array size="10;" arr="(int*)" realloc(arr, * sizeof(int)); for(i="5;" i< size; printf('%d ', arr[i]); free(arr); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 5 6 7 8 9 </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first create a dynamic array <strong> <em>arr</em> </strong> of size <strong> <em>5</em> </strong> using the <strong> <em>malloc() function</em> </strong> . After that, we set each element of the array to its index using a <strong> <em>for loop</em> </strong> . To resize the array, we set the value of size to <strong> <em>10</em> </strong> and use the <strong> <em>realloc()</em> </strong> function to resize the array. After that, we set the value of the new elements in the array using another for loop. Finally, we print the contents of the array and free the memory used by the array.</p> <h2>Conclusion</h2> <p> <strong> <em>Dynamic arrays</em> </strong> are a powerful data structure in programming that allow for the creation and manipulation of arrays of varying sizes during runtime. In C, dynamic arrays are implemented using pointers and memory allocation functions, making them a valuable tool for optimizing memory usage and creating efficient programs.</p> <p>While <strong> <em>dynamic arrays</em> </strong> have many advantages, they also have some disadvantages. Dynamic arrays can be more complex to implement than static arrays and can be slower in some cases. However, the flexibility and efficiency of dynamic arrays make them a valuable tool for many programming tasks.</p> <p>To create and manipulate dynamic arrays in C, we must use memory allocation functions to allocate and deallocate memory during runtime. The most commonly used memory allocation functions in C are <strong> <em>malloc()</em> </strong> , <strong> <em>calloc()</em> </strong> , and <strong> <em>realloc()</em> </strong> . It is important to properly manage memory usage when working with dynamic arrays to avoid memory leaks and other memory-related issues.</p> <hr></size;></pre></size;></pre></size;>

Bu örnekte, adında yeni bir tamsayı değişkeni tanımlıyoruz. yeni_boyut , dizinin yeni boyutunu temsil eder. Bundan sonra şunu kullanıyoruz: realloc() işlevi diziyi yeniden boyutlandırmak için. realloc() işlevi işaretçiyi orijinal bellek bloğuna götürür (bu durumda, varış ) ve yeni boyut bellek bloğunun (içinde bayt ). çarpıyoruz yeni boyut dizinin boyut bir tamsayı toplam boyutu bayt cinsinden almak için.

Dinamik bir diziyi kullanarak yeniden boyutlandırdığımızda şunu unutmamak önemlidir: realloc() dizideki mevcut veriler korunacaktır. Dizinin yeni boyutu orijinal boyutundan büyükse yeni öğeler başlatılmayacaktır.

java'da sıralanmış arraylist

C'de dinamik bir dizi tarafından kullanılan belleği boşaltmak için şunu kullanabiliriz: özgür() işlev. özgür() işlev, kullanılarak tahsis edilen bellek bloğuna bir işaretçi alır. malloc() , kalloc() , veya realloc() . Dinamik bir dizi tarafından kullanılan belleğin nasıl boşaltılacağına dair bir örnek:

 free(arr); 

Bu örnekte, şunu kullanıyoruz: ücretsiz() işlevi dinamik dizi tarafından kullanılan belleği boşaltmak için varış . Dinamik bir dizi tarafından kullanılan belleği serbest bıraktıktan sonra dizinin elemanlarına erişmeye çalışmamamız gerektiğini unutmamak önemlidir.

C'de dinamik dizilerin kullanımına ilişkin bazı örnekler:

Dinamik Diziye Öğe Ekleme:

java'da catch bloğunu deneyin

Dinamik dizi kullanmanın temel faydalarından biri, diziye gerektiği gibi öğe ekleyebilme yeteneğidir. Dinamik bir diziye nasıl öğe ekleneceğine dair bir örnek:

 #include #include int main() { int size = 5; int *arr = (int*) malloc(size * sizeof(int)); int i; for(i = 0; i<size; i++) { arr[i]="i;" } add a new element to the array size++; arr="(int*)" realloc(arr, size * sizeof(int)); arr[size-1]="i;" for(i="0;" i< size; printf(\'%d \', arr[i]); free(arr); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 5 </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first create a dynamic array <strong> <em>arr</em> </strong> of size <strong> <em>5</em> </strong> using the <strong> <em>malloc()</em> </strong> function. After that, we set each element of the array to its index using a <strong> <em>for loop</em> </strong> . To add a new element to the array, we increment the size of the array by one and use the <strong> <em>realloc() function</em> </strong> to resize the array. We set the value of the last element in the array to the current value of <strong> <em>i</em> </strong> . Finally, we print the contents of the array and free the memory used by the array.</p> <h3>Resizing a Dynamic Array</h3> <p>Another advantage of using a dynamic array is the ability to resize the array as needed. Here is an example of how to resize a dynamic array:</p> <pre> #include #include int main() { int size = 5; int *arr = (int*) malloc(size * sizeof(int)); int i; for(i = 0; i<size; i++) { arr[i]="i;" } resize the array size="10;" arr="(int*)" realloc(arr, * sizeof(int)); for(i="5;" i< size; printf(\'%d \', arr[i]); free(arr); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 5 6 7 8 9 </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first create a dynamic array <strong> <em>arr</em> </strong> of size <strong> <em>5</em> </strong> using the <strong> <em>malloc() function</em> </strong> . After that, we set each element of the array to its index using a <strong> <em>for loop</em> </strong> . To resize the array, we set the value of size to <strong> <em>10</em> </strong> and use the <strong> <em>realloc()</em> </strong> function to resize the array. After that, we set the value of the new elements in the array using another for loop. Finally, we print the contents of the array and free the memory used by the array.</p> <h2>Conclusion</h2> <p> <strong> <em>Dynamic arrays</em> </strong> are a powerful data structure in programming that allow for the creation and manipulation of arrays of varying sizes during runtime. In C, dynamic arrays are implemented using pointers and memory allocation functions, making them a valuable tool for optimizing memory usage and creating efficient programs.</p> <p>While <strong> <em>dynamic arrays</em> </strong> have many advantages, they also have some disadvantages. Dynamic arrays can be more complex to implement than static arrays and can be slower in some cases. However, the flexibility and efficiency of dynamic arrays make them a valuable tool for many programming tasks.</p> <p>To create and manipulate dynamic arrays in C, we must use memory allocation functions to allocate and deallocate memory during runtime. The most commonly used memory allocation functions in C are <strong> <em>malloc()</em> </strong> , <strong> <em>calloc()</em> </strong> , and <strong> <em>realloc()</em> </strong> . It is important to properly manage memory usage when working with dynamic arrays to avoid memory leaks and other memory-related issues.</p> <hr></size;></pre></size;>

Açıklama:

Bu örnekte ilk önce dinamik bir dizi oluşturuyoruz varış boyutta 5 kullanmak malloc() işlev. Bundan sonra dizinin her elemanını bir indeks kullanarak indeksine ayarlıyoruz. döngü için . Diziye yeni bir eleman eklemek için dizinin boyutunu bir arttırıp şunu kullanırız: realloc() işlevi diziyi yeniden boyutlandırmak için. Dizideki son elemanın değerini mevcut değerine ayarladık. Ben . Son olarak dizinin içeriğini yazdırıyoruz ve dizinin kullandığı belleği boşaltıyoruz.

Dinamik Diziyi Yeniden Boyutlandırma

Dinamik dizi kullanmanın bir başka avantajı da diziyi gerektiği gibi yeniden boyutlandırabilme yeteneğidir. Dinamik bir dizinin nasıl yeniden boyutlandırılacağına dair bir örnek:

 #include #include int main() { int size = 5; int *arr = (int*) malloc(size * sizeof(int)); int i; for(i = 0; i<size; i++) { arr[i]="i;" } resize the array size="10;" arr="(int*)" realloc(arr, * sizeof(int)); for(i="5;" i< size; printf(\'%d \', arr[i]); free(arr); return 0; < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 5 6 7 8 9 </pre> <p> <strong>Explanation:</strong> </p> <p>In this example, we first create a dynamic array <strong> <em>arr</em> </strong> of size <strong> <em>5</em> </strong> using the <strong> <em>malloc() function</em> </strong> . After that, we set each element of the array to its index using a <strong> <em>for loop</em> </strong> . To resize the array, we set the value of size to <strong> <em>10</em> </strong> and use the <strong> <em>realloc()</em> </strong> function to resize the array. After that, we set the value of the new elements in the array using another for loop. Finally, we print the contents of the array and free the memory used by the array.</p> <h2>Conclusion</h2> <p> <strong> <em>Dynamic arrays</em> </strong> are a powerful data structure in programming that allow for the creation and manipulation of arrays of varying sizes during runtime. In C, dynamic arrays are implemented using pointers and memory allocation functions, making them a valuable tool for optimizing memory usage and creating efficient programs.</p> <p>While <strong> <em>dynamic arrays</em> </strong> have many advantages, they also have some disadvantages. Dynamic arrays can be more complex to implement than static arrays and can be slower in some cases. However, the flexibility and efficiency of dynamic arrays make them a valuable tool for many programming tasks.</p> <p>To create and manipulate dynamic arrays in C, we must use memory allocation functions to allocate and deallocate memory during runtime. The most commonly used memory allocation functions in C are <strong> <em>malloc()</em> </strong> , <strong> <em>calloc()</em> </strong> , and <strong> <em>realloc()</em> </strong> . It is important to properly manage memory usage when working with dynamic arrays to avoid memory leaks and other memory-related issues.</p> <hr></size;>

Açıklama:

Bu örnekte ilk önce dinamik bir dizi oluşturuyoruz varış boyutta 5 kullanmak malloc() işlevi . Bundan sonra dizinin her elemanını bir indeks kullanarak indeksine ayarlıyoruz. döngü için . Diziyi yeniden boyutlandırmak için boyut değerini şu şekilde ayarladık: 10 ve şunu kullan realloc() diziyi yeniden boyutlandırma işlevi. Daha sonra dizideki yeni elemanların değerini başka bir for döngüsü kullanarak belirliyoruz. Son olarak dizinin içeriğini yazdırıyoruz ve dizinin kullandığı belleği boşaltıyoruz.

Çözüm

Dinamik diziler çalışma zamanı boyunca farklı boyutlarda dizilerin oluşturulmasına ve değiştirilmesine olanak tanıyan, programlamada güçlü bir veri yapısıdır. C'de dinamik diziler, işaretçiler ve bellek ayırma işlevleri kullanılarak uygulanır; bu da onları bellek kullanımını optimize etmek ve verimli programlar oluşturmak için değerli bir araç haline getirir.

Sırasında dinamik diziler birçok avantajı olduğu gibi dezavantajları da var. Dinamik dizilerin uygulanması statik dizilere göre daha karmaşık olabilir ve bazı durumlarda daha yavaş olabilir. Ancak dinamik dizilerin esnekliği ve verimliliği, onları birçok programlama görevi için değerli bir araç haline getirir.

tostring yöntemi java

C'de dinamik diziler oluşturmak ve değiştirmek için, çalışma zamanı sırasında belleği tahsis etmek ve serbest bırakmak amacıyla bellek ayırma işlevlerini kullanmalıyız. C'de en sık kullanılan bellek ayırma işlevleri şunlardır: malloc() , kalloc() , Ve realloc() . Bellek sızıntılarını ve bellekle ilgili diğer sorunları önlemek için dinamik dizilerle çalışırken bellek kullanımını doğru şekilde yönetmek önemlidir.