기반지식/C/C++2010. 6. 23. 21:24
☆ 배열과 포인터 예제 1

#include <stdio.h>

void main()
{
int a[5]={3,10,25,30,40};
int *p;

p=a; // p=&a[0] 과 같음

*p=5;
*(p+1)=7;
p++; // p 시작주소를 1칸 이동
*(p+2)=15;
p+=2; // p 시작주소를 2칸 이동
*p=27;


for(int i=0;i<5;i++)
{
printf("a[%d] 의 주소 : %d,%d\n",i,&a[i],p+i);
}

for(i=0;i<5;i++)
{
printf("a[%d] 의 값 : %d,%d\n",i,a[i],*(p+i));
}

}


☆ 배열과 포인터 예제 2

#include <stdio.h>
#define MAX 5

void dataout(int *sp)
{
puts("점수 출력");
for(int i=0;i<MAX;i++)
{
//방법 1
//printf("점수 # %d : %d점\n",i+1,*(sp+i));

//방법 2
//printf("점수 # %d : %d점\n",i+1,*sp++);

//방법 3
printf("점수 # %d : %d점\n",i+1,sp[i]);
}
}

void datain(int *sp)
{
for(int i=0;i<MAX;i++)
{
printf("%d번째 점수 입력 : ",i+1);
scanf("%d",sp+i); // sp가 주소이므로 &는 안 쓴다
}
}

int getsum(int *sp)
{
int temp=0;
for(int i=0;i<MAX;i++)
{
temp+=*(sp+i); //포인터로 배열을 읽어 합계 구하기. sp[i]가 아님!
}
return temp; //값을 리턴하는 시점도 중요함. for문 안에 들어가면 안된다.
}

void main()
{
//int sc[MAX]={67,89,90,56,70};

int sc[MAX],sum;
datain(sc);
dataout(sc);

sum=getsum(sc);
printf("합계 : %d\n",sum);

}


☆ 배열과 포인터 예제 3

#include <stdio.h>

void write(char *s)
{
puts(s);
}


void strupr(char *s)
{
while(*s!='\0')
{
if(*s>='a' && *s<='z')
putchar(*s-32);
else
putchar(*s);
s++;
}
putchar('\n');
}


void strcat(char *a, char *b)
{
while(*a!='\0') // 문자열 a를 NULL문자가 나올 때까지 훑는다
a++;       // *a를 써서 포인터로 받은 문자열 이름은 바로 배열의 첫째칸 변수이기도 하므로 
                            바로 증가시킬 수 있다
while(*b!='\0')
{
*a=*b;
a++;
b++;
}
*a=NULL;
}


void main()
{
char str[]="Have a nice day!!";
char a[20]="apple";
char b[]="banana";

write(str);

strupr(str);
write(str);

strcat(a,b);
write(a);
}


☆ C++에서만 사용할 수 있는 출력양식 (cin, cout)

#include <iostream.h>
#include <iomanip.h>

void main()
{
/*
int age=12;
char name[]="이미자";
double avg=98.7;
*/

int age;
char name[10];
double avg;

cout<<"이름 :";
// cin>>name;
cin.getline(name,10); // <-- 줄단위 입력 가능, 공백도 포함 가능
cout<<"나이 :";
cin>>age;
cout<<"평균 :";
cin>>avg;


// cout<<"이름, 나이, 평균의 순서로 입력하시오\n";
// cin>>name>>age>>avg;

cout<<"이  름 : "<<name<<endl;
cout<<"나  이 : "<<age<<"\n";
cout<<"평  균 : "<<avg<<endl;

cout<<"---------------------------------------------------\n";
cout<<setw(10)<<"이름"<<setw(10)<<"나이"
<<setw(10)<<"평균"<<endl;
cout<<setw(10)<<name<<setw(10)<<age
<<setw(10)<<avg<<endl;
}

ㅇㅇ
Posted by windship