C의 포인터, 배열 및 문자열
15183 단어 programmingbasicpointersc
소개
포인터는 값이 다른 변수의 주소, 즉 메모리 위치의 직접 주소인 변수입니다. 모든 변수는 메모리 위치이며 모든 메모리 위치에는 메모리의 주소를 나타내는 앰퍼샌드(&) 연산자를 사용하여 액세스할 수 있는 정의된 주소가 있습니다.
#include <stdio.h>
int main () {
int variable1;
char variable2[10];
printf("Address of var1 variable: %x\n", &variable1);
printf("Address of var2 variable: %x\n", &variable2);
return 0;
}
Address of var1 variable: bff5a400
Address of var2 variable: bff5a3f6
문자열은 배열에 문자 시퀀스를 저장하는 데이터 유형입니다. C에서 문자열은 항상 문자열의 끝을 나타내는 null 문자(\0)로 끝납니다.
char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
배열은 연속 메모리 위치에 저장된 유사한 유형의 데이터 항목 모음으로 정의됩니다. 배열은 int, char, double, float 등과 같은 기본 데이터 유형을 저장할 수 있는 C 프로그래밍 언어의 파생 데이터 유형입니다. 또한 포인터, 구조, 등.
#include<stdio.h>
int main(){
int i=0;
int marks[5]={20,30,40,50,60};//declaration and initialization of array
//traversal of array
for(i=0;i<5;i++){
printf("%d \n",marks[i]);
}
return 0;
}
20
30
40
50
60
문자열에 대한 포인터 배열이란?
포인터에는 필요한 특정 변수의 주소가 포함되어 있습니다. 포인터 배열은 배열의 모든 요소의 주소를 저장하고 문자열 포인터 배열은 배열에 있는 문자열의 주소를 저장합니다. 배열에는 배열에 있는 모든 문자열 요소의 기본 주소가 포함됩니다.
다음은 이를 설명하는 예입니다.
char *arr[]={
"Big",
"black ",
"Heavy",
"Nice",
"ball"
};
2D 배열을 사용하는 문자열 배열:
우리가 알고 있듯이 배열은 유사한 데이터 유형의 모음이며 인접한 메모리 위치에 저장된 모든 데이터입니다. 따라서 이 경우 각 문자는 인접한 메모리 위치에 배치됩니다. 예시
char arr[ROW][COL]; //2d array of character
즉, 2D 배열을 만들면 최소한 가장 긴 문자열과 같은 열 수를 가진 배열을 만들어야 하며 더 작은 값을 가진 배열 요소에서 많은 공간 낭비가 발생합니다.
문자열에 대한 포인터 배열을 사용하는 문자열 배열:
2D 배열과 마찬가지로 문자열에 대한 포인터 배열을 사용하여 문자열 배열을 만들 수 있습니다. 기본적으로 이 배열은 각 포인터가 문자열의 첫 번째 문자를 가리키는 문자 포인터의 배열입니다.
통사론
char *arr[ROW]; //array of pointer to string
씨
문자열 배열을 표현하려는 방법에 따라 포인터를 정의하여 배열에서 문자열에 액세스할 수 있습니다. 몇 가지 예제 코드를 보자.
**
1.) 배열에 대한 포인터를 사용하여 문자의 2d 배열에 액세스
**
문자열 배열에 액세스하려면 배열에 대한 포인터를 만들고 포인터를 배열로 초기화해야 합니다. 이제 for 루프를 사용하여 배열의 모든 문자열을 읽을 수 있습니다.
1D 배열에 대한 포인터:
#include<stdio.h>
int main()
{
int row =0;
//create 2d array of the characters
char * arr[5] = {"Cloud1", "Cloud1Cloud1", "Cloud1Cloud1Cloud1", "Cloud1Cloud1Cloud1Cloud1", "Cloud1Cloud1Cloud1Cloud1"};
//create pointer to the array
char * (*ptrArr)[5] = NULL;
//initialize the pointer
ptrArr = &arr;
for (row = 0; row < 5; ++row)// Loop for coloumb
{
printf("%s \n", (*ptrArr)[row]);
}
return 0;
}
산출:
/tmp/wY4tusyiIu.o
Cloud1
Cloud1Cloud1
Cloud1Cloud1Cloud1
Cloud1Cloud1Cloud1Cloud1
Cloud1Cloud1Cloud1Cloud1
2D 배열에 대한 포인터
#include<stdio.h>
int main()
{
int row =0;
//create 2d array of the characters
char arr[5][10] = {"Coding", "Coding", "Coding", "Coding", "Coding"};
//create pointer to the 2d array
char (*ptrArr)[5][10] = NULL;
//initialize the pointer
ptrArr = &arr;
for (row = 0; row < 5; ++row)// Loop for coloumb
{
printf("%s \n", (*ptrArr)[row]);
}
return 0;
}
산출:
/tmp/wY4tusyiIu.o
Coding
Coding
Coding
Coding
Coding
** 포인터에 대한 포인터**
#include<stdio.h>
int main()
{
int row =0;
//create 2d array of the characters
char * arr[5] = {"pointer2pointer", "pointer2pointer", "pointer2pointer", "pointer2pointer", "pointer2pointer"};
//create pointer to the array
char **ptr = NULL;
//initialize the pointer with array
ptr = arr;
for (row = 0; row < 5; ++row)// Loop for coloumb
{
printf(" %s \n", ptr[row]);
}
return 0;
}
산출:
/tmp/wY4tusyiIu.o
pointer2pointer
pointer2pointer
pointer2pointer
pointer2pointer
pointer2pointer
문자열 포인터 배열의 장점
Reference
이 문제에 관하여(C의 포인터, 배열 및 문자열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/missmati/pointers-arrays-strings-in-c-52h3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)