반응형
- _21_문제
- 문제024_포인터와이차배열.cpp
#include <stdio.h>
#include <stdlib.h> // srand();
#include <time.h> // time(NULL)
int main(void) {
int data[][3] = {1, 3, 4, 5, 2, 9, 6, 8, 7};
//data[3][3] = {{1,3,4},{5,2,9},{6,8,7}};
int *p = data[1]; //5의 주소를 줌 //&data[1][0] 원형 //x13주소
int x, y;
x = *p; //5
y = *(p + 2); //9
printf("%d %d\n" , x , y);
return 0;
}
- 문제024_포인터와이차배열02.cpp
#include <stdio.h>
int main(void) {
int data[3][3] = {{10,20,30},{40,50,60},{70,80,90}};
int sum1, sum2;
/*
*data => data[0] =>{10,20,30} 아직까지 이것 . 한 줄
(*data + 1) => 20
*/
int n = *(*data + 1); // (*data) => 20
//data[0][0] + 1 => data[0][1] => 20
int n2 = *(*data + 2); // 30
int n3 = *data[1]; // 40
//data[1]의 *(별) // {40,50,60}
int n4 = *data[2]; //70
sum1 = n + n2; // 50
sum2 = n3 + n4; // 110
printf("%d\n", n);
printf("%d\n", n2);
printf("%d\n", n3);
printf("%d\n", n4);
printf("%d %d\n" , sum1 , sum2);
return 0;
}
- 문제024_포인터와이차배열03.cpp
#include <stdio.h>
int main(void) {
int data[2][3] = {{10,20,30},{40,50,60}};
printf("%p\n", data); //x1
//data를 해도 {10,20,30}의 10의 주소가 나온다. //x1
printf("%p\n", &data); //x1
//똑같이 x1의 주소가 나온다. 10의 주소
printf("%p\n", data[0]); //x1
printf("%p\n", *data); //x1
//위의 4개는 전부 x1의 주소가 나오는것이다.
//----------------------------------------------
printf("%p\n", &data[0][0]); //x1
printf("%p\n", data + 1); //x13
//data + 1 => {10,20,30}의 크기만큼 이동함
//----------------------------------------------
printf("%d\n", &data + 1); //60 //x21
printf("%d\n", data[0] + 1); //x5
//20의 주소
printf("%p\n", *data + 1); //x5
printf("%p\n", &data[0][0] + 1); //x5
return 0;
}
- 문제024_포인터와이차배열04.cpp
#include <stdio.h>
int main(void) {
static char *c[] = {"aaa" , "bbb" , "ccc"};
/*
char * c1 = "aaa";
char * c2 = "bbb";
char * c3 = "ccc";
//위의 3개를 배열로 만든것
char * carr[3] = {"aaa" , "bbb" , "ccc"};
//carr[3][4];
*/
printf("%s\n" , *(c + 1)); //bbb
return 0;
}
- 문제024_포인터와이차배열05.cpp
#include <stdio.h>
int main(void) {
char* array1[2] = {
"Good morning" , "C language"
};
char * a1[] = "Good morning";
char * a2[] = "C language";
char * arrayArr[2] = {"Good morning" , "C language"}
printf("%s\n", array1[0] + 5); //morning
printf("%s\n", array1[1] + 6); //uage
return 0;
}
- 문제024_포인터와이차배열06.cpp
#include <stdio.h>
int main(void) {
int a[2][3] = {{-3, 14, 5},{1, -10, 8}};
int *b[] = {a[0], a[1]};
int *p = b[1]; // a[1] 의 주소 //1의 주소 //p = {1, -10, 8}
printf("%d\n" , *b[1]); //1
//*b[1] => b1의 값
printf("%d\n" , *(++p)); //-10
printf("%d\n" , *(--p-2)); //14
return 0;
}
- 문제024_포인터와이차배열07.cpp
#include <stdio.h>
#include <stdlib.h>
int main(void) {
// 심화 pass
int arr[2][3] = {10, 20, 30, 40, 50, 60};
int(*p)[3] = NULL;
p = arr; //{{10, 20, 30}, {40, 50, 60}}
printf("%d\n" , *(p[0] + 1)); //20
printf("%d\n" , *(p[1] + 2)); //60
printf("%d\n" , *(*(p + 1) + 0)); //40
printf("%d\n" , *(*(p + 1) + 1)); //50
return 0;
}
반응형
'코딩 > C언어' 카테고리의 다른 글
| _21_교재 => 수업027_포인터와함수 , _21_문제 => 문제027_포인터와함수~문제027_포인터와함수04 (0) | 2025.07.15 |
|---|---|
| 수업026_구조체 (0) | 2025.07.11 |
| 수업024_포인터와이차배열 (11) | 2025.07.09 |
| 포인터 와 배열 문제 (6~10) (2) | 2025.07.09 |
| 포인터 와 배열 (1~4) (0) | 2025.07.09 |