fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6. #define N 3 //кол-во строк
  7. #define M 5 //кол-во символов в строке (4 символа + '\0' для разделения строк в памяти
  8.  
  9. void print_name(char** array, const int num) {
  10. printf("%s\n", array[num]);
  11. }
  12.  
  13. //или так
  14. void print_name_1(char* array, const int num) {
  15. array += M*num;
  16. printf("%s\n", array);
  17. }
  18.  
  19. int main()
  20. {
  21. //char* names[3][4];
  22. //выделяем память правильно!
  23. char **names = (char**) malloc(N*sizeof(char*) + M*N*sizeof(char));
  24. names[0] = (char*) (names + N); //указатель на первый символ
  25. for(size_t i=1; i<N; i++)
  26. names[i] = names[0] + M*i; //смещаем указатель под начало строк
  27.  
  28. //используем функцию strcpy из <string.h>
  29. strcpy(names[0],"kola");
  30. strcpy(names[1],"vasa");
  31. strcpy(names[2],"misa");
  32.  
  33.  
  34. print_name(names, 2);
  35.  
  36. print_name_1(names[0], 0);
  37.  
  38. free(names); //освобождаем память одной функцией free
  39.  
  40. return 0;
  41. }
Success #stdin #stdout 0s 4596KB
stdin
Standard input is empty
stdout
misa
kola