C 프로그래밍에서 const char 포인터 배열을 예상하는 함수에 char**을 전달하는 방법

2024-07-27

함수 프로토타입에 const char 배열을 사용합니다.

void my_function(const char* str_array[]);

이 경우 함수는 문자열 배열을 변경할 수 없습니다.

void my_function(char* str_array[]);
void my_function(const char* str);
void my_function(char* str);
void my_function(void* ptr);

이 경우 함수는 포인터가 가리키는 데이터를 변경할 수 있습니다.

예시

다음은 const char 포인터 배열을 예상하는 함수에 char**을 전달하는 방법의 예입니다.

#include <stdio.h>

void my_function(const char* str_array[]);

int main() {
  char* str_array[] = { "Hello", "World" };

  my_function(str_array);

  return 0;
}

void my_function(const char* str_array[]) {
  int i;

  for (i = 0; str_array[i] != NULL; i++) {
    printf("%s\n", str_array[i]);
  }
}

이 코드는 다음과 같은 출력을 생성합니다.

Hello
World

참고:

  • const char 포인터 배열은 문자열 배열을 변경하지 못하도록 보호하는 데 사용할 수 있습니다.
  • char** 포인터는 문자열 배열을 변경할 수 있도록 허용합니다.
  • 함수 프로토타입에 const char* 포인터를 사용하면 함수가 문자열 배열을 변경하지 못하도록 보호할 수 있습니다.

추가 정보




예제 코드

#include <stdio.h>

void my_function(const char* str_array[]);

int main() {
  char* str_array[] = { "Hello", "World" };

  my_function(str_array);

  return 0;
}

void my_function(const char* str_array[]) {
  int i;

  for (i = 0; str_array[i] != NULL; i++) {
    printf("%s\n", str_array[i]);
  }
}
Hello
World

설명

이 예제에서는 다음과 같은 방법을 사용하여 const char 포인터 배열을 예상하는 함수에 char**을 전달합니다.

  1. my_function() 함수 프로토타입은 const char 포인터 배열을 매개변수로 받습니다.
  2. main() 함수에서 str_array라는 char 포인터 배열을 선언하고 초기화합니다.
  3. my_function() 함수에 str_array를 전달합니다.
  4. my_function() 함수는 str_array를 반복하고 각 문자열을 출력합니다.

참고

추가 정보




const char 포인터 배열을 예상하는 함수에 char**을 전달하는 대체 방법

함수 프로토타입을 변경합니다.

void my_function(char* str_array[]);
void my_function(const char* str);

함수에 void 포인터를 전달합니다.

void my_function(void* ptr);
void my_function(const void* ptr);

함수에 포인터를 전달하지 않습니다.

void my_function(void);
#include <stdio.h>

void my_function(char* str_array[]);

int main() {
  char* str_array[] = { "Hello", "World" };

  my_function(str_array);

  return 0;
}

void my_function(char* str_array[]) {
  int i;

  for (i = 0; str_array[i] != NULL; i++) {
    printf("%s\n", str_array[i]);
  }
}
Hello
World
  • 함수에 void** 포인터를 전달하면 함수가 포인터가 가리키는 데이터를 변경할 수 있습니다.

추가 정보


arrays c pointers



자바 배열 출력하는 가장 간단한 방법

문제: 자바에서 배열을 출력하고 싶은데, 어떻게 해야 할지 막막하다면 이 가이드를 참고하세요.해결:자바에서 배열을 출력하는 가장 간단한 방법은 크게 두 가지가 있습니다.가장 기본적이고 직관적인 방법입니다. 배열의 각 요소를 순서대로 접근하여 출력합니다...


자바 배열에서 특정 값이 포함되어 있는지 확인하는 방법

문제: 자바에서 주어진 배열에 특정 값이 존재하는지 여부를 판단하고 싶습니다.해결 방법:자바에서는 배열 내의 값을 검색하는 다양한 방법이 있습니다. 각 방법은 상황에 따라 장단점이 있으므로, 문제에 맞는 적절한 방법을 선택하는 것이 중요합니다...


자바에서 배열 선언 및 초기화하기

자바에서 배열은 같은 자료형의 값들을 연속적으로 저장하기 위한 자료구조입니다. 마치 서랍장에 같은 종류의 물건을 칸별로 정리해 놓는 것과 비슷합니다. 각 서랍에 해당하는 자리를 인덱스라고 부르며, 이 인덱스를 통해 특정 값에 접근할 수 있습니다...


두 배열의 요소가 동일한지 확인하는 C 프로그래밍 (순열 고려)

순열을 고려하여 두 배열의 동일성을 검사하는 보다 효율적인 방법은 다음과 같습니다.1. 해시 테이블 사용각 배열의 각 요소를 해시 테이블에 키로 저장하고, 해당 키의 값을 증가시킵니다.두 배열을 모두 처리한 후, 해시 테이블의 모든 키-값 쌍을 비교합니다...


C/C++ 프로그래밍에서 #include <filename>과 #include "filename"의 차이점

1. #include <filename>각 컴파일러마다 정의된 표준 헤더 파일을 포함하는 데 사용됩니다.<filename> 안에 작성된 파일 이름은 컴파일러가 미리 정의된 경로 목록에서 검색됩니다. 이 목록은 일반적으로 운영 체제 및 컴파일러에 따라 다릅니다...



arrays c pointers

C 언어에서 배열의 크기를 구하는 방법

C 언어에서 배열의 크기를 구하는 가장 일반적인 방법은 sizeof 연산자를 사용하는 것입니다.전체 배열의 크기: sizeof(배열 이름)배열이 차지하는 전체 메모리 크기를 바이트 단위로 반환합니다.배열이 차지하는 전체 메모리 크기를 바이트 단위로 반환합니다


자바에서 두 개의 배열을 연결하는 방법

자바에서 두 개의 배열을 연결하여 하나의 새로운 배열을 만드는 방법은 여러 가지가 있습니다. 각 방법마다 장단점이 있으므로, 상황에 맞는 적절한 방법을 선택하는 것이 중요합니다.원리: 시스템 메서드를 이용하여 배열의 일부를 다른 배열로 복사합니다


Java에서 배열을 ArrayList로 변환하기

동적 크기: ArrayList는 필요에 따라 크기를 조절할 수 있어 배열처럼 미리 크기를 정해둘 필요가 없습니다. 데이터가 추가되거나 삭제될 때 유연하게 대처할 수 있습니다.다양한 메소드: ArrayList는 add


C# 배열에 값 추가하기: 자세한 설명

C# 배열은 동일한 데이터형의 값들을 순서대로 저장하는 자료구조입니다. 배열의 각 요소는 고유한 인덱스를 가지며, 이 인덱스를 통해 값에 접근하고 변경할 수 있습니다.배열 선언 예시:1. 배열 초기화 시 값 할당:배열을 선언하는 동시에 값을 할당할 수 있습니다


PHP에서 배열 요소 삭제하기: unset() 함수 활용

PHP에서 배열에서 특정 요소를 삭제하려면 unset() 함수를 사용합니다. unset() 함수는 변수나 배열 요소를 메모리에서 해제하는 데 사용되는 일반적인 함수이지만, 배열의 컨텍스트에서 사용하면 해당 요소를 삭제하는 효과를 가져옵니다