L-zl 4 jaren geleden
bovenliggende
commit
c5171b6399
7 gewijzigde bestanden met toevoegingen van 98 en 3 verwijderingen
  1. 3 2
      .gitignore
  2. 3 0
      CMakeLists.txt
  3. 23 0
      dyn_mem_array.cpp
  4. 15 0
      include/try_pointer.hpp
  5. 20 0
      min_array.cpp
  6. 28 0
      pointer_array.cpp
  7. 6 1
      try_pointer.cpp

+ 3 - 2
.gitignore

@@ -1,8 +1,9 @@
 cmake-build-debug/
-main.dSYM/
+*.dSYM/
 .vscode/
 build/
 .clangd
 *.json
 *.so
-*.a
+*.a
+*.dylib

+ 3 - 0
CMakeLists.txt

@@ -11,4 +11,7 @@ set_target_properties(functions PROPERTIES LINKER_LANGUAGE CXX)
 # link_directories(lib) link_libraries(functions)
 add_executable(CppYoutube main.cpp)
 add_executable(try_pointer try_pointer.cpp)
+add_executable(pointer_array pointer_array.cpp)
+add_executable(min_array min_array.cpp)
+add_executable(dyna_mem_array dyn_mem_array.cpp)
 target_link_libraries(CppYoutube functions)

+ 23 - 0
dyn_mem_array.cpp

@@ -0,0 +1,23 @@
+#include <iostream>
+
+int main()
+{
+    int size;
+    std::cout << "Size: ";
+    std::cin >> size;
+    // this can work now
+    // int arr[size];
+    int *arr = new int[size];
+    for (int i = 0; i < size; i++)
+    {
+        std::cin >> arr[i];
+        // std::cout << arr[i] << std::endl;
+    }
+    for (int i = 0; i < size; i++)
+    {
+        std::cout << arr[i] << std::endl;
+    }
+
+    delete[] arr;
+    arr = NULL;
+}

+ 15 - 0
include/try_pointer.hpp

@@ -0,0 +1,15 @@
+#include <iostream>
+
+// Void pointer can be pointed to any data type
+void print(void *ptr, char type)
+{
+    switch (type)
+    {
+    case 'i':
+        std::cout << (*(int *)ptr) << std::endl;
+        break; //handle *int
+    case 'c':
+        std::cout << (*(char *)ptr) << std::endl; //handle *char
+        break;
+    }
+}

+ 20 - 0
min_array.cpp

@@ -0,0 +1,20 @@
+#include <iostream>
+// use pointer to return multiple values in a function
+void get_min_and_max(int numbers[], int size, int *min, int *max)
+{
+    for (int i = 1; i < size; i++)
+    {
+        if (numbers[i] < *min)
+            *min = numbers[i];
+        if (numbers[i] > *max)
+            *max = numbers[i];
+    }
+}
+int main()
+{
+    int arr[8] = {8, -11, 5, 33, 49, 0, -2, 5};
+    int arr_min = arr[0], arr_max = arr[0];
+    get_min_and_max(arr, 8, &arr_min, &arr_max);
+    printf("\nMin: %d, Max: %d\n", arr_min, arr_max);
+    return 0;
+}

+ 28 - 0
pointer_array.cpp

@@ -0,0 +1,28 @@
+#include <iostream>
+
+int main()
+{
+    int my_array[5] = {1, 2, 3, 19, 5};
+    // same 2 line
+    std::cout << "  Add: " << my_array << std::endl;
+    std::cout << "  Add: " << &my_array << std::endl;
+
+    std::cout << "Add+3: " << my_array + 3 << std::endl;
+    std::cout << *(my_array + 3) << std::endl;
+    // this line below is doing exactly the same as the line above
+    std::cout << my_array[4] << std::endl;
+
+    int new_array[5];
+    for (int i = 0; i < 5; i++)
+    {
+        std::cout << "Number: ";
+        std::cin >> new_array[i];
+    }
+    // care the index number if using this method
+    for (int i = 0; i < 6; i++)
+    {
+        std::cout << *(new_array + i) << std::endl;
+    }
+
+    return 0;
+}

+ 6 - 1
try_pointer.cpp

@@ -1,4 +1,4 @@
-#include <iostream>
+#include "try_pointer.hpp"
 
 using namespace std;
 
@@ -15,6 +15,11 @@ int main()
     cout << *ptr << endl;
     // the value of n also changed
     cout << n << endl;
+    char letter = 'a';
+    char *l_ptr = &letter;
+
+    print(l_ptr, 'c');
+    print(ptr, 'i');
 
     return 0;
 }