데이터 구조 예비 지식
데이터 구조 설명 을 할 때 우 리 는 일부 기초 지식 을 복습 하고 공 고 히 해 야 한다. 목적 은 데이터 구조의 학습 을 편리 하 게 하기 위해 서 이다. 주로 관련 된 기초 지식 은 지침, 구조 체, 지침 과 배열 의 관계 와 메모리 배분 공간 이다. 그 다음 에 우 리 는 함께 간단하게 보 자.
지침 의 중요성
그렇다면 우리 의 CPU (중앙 처리 장치) 와 우리 의 메모리 공간 에 접근 할 때의 원 리 는 무엇 입 니까?원리: CPU 와 메모리 사이 에 주소 선, 제어 선, 데이터 라인 이 존재 합 니 다. 주소 선 은 CPU 가 메모리 공간 을 찾 는 주소 입 니 다. 제어 선 은 주로 데이터 의 읽 기와 쓰 기 를 제어 하 는 작업 입 니 다. 예 를 들 어 0 은 읽 기 이 고 1 은 쓰기 입 니 다. 데이터 라인 은 CPU 와 메모리 공간 에서 데 이 터 를 전달 하 는 과정 입 니 다.
주의: 변 수 는 반드시 연속 적 으로 분배 되 지 않 고 무 작위 로 메모 리 를 분배 합 니 다.
메모리
주의:
어떻게 피 변조 함 수 를 통 해 메 인 함수 의 일반 변수의 값 을 수정 합 니까?
#include
int main(void)
{
int *p; //p ,int* p int
int i=10;
int j;
// j=*p;
// printf("%d
",j); //error,p
// char ch='A';
// p=&ch; //error,
p=&i; //p i ,p i; p i , i p ; ,*p i 。*p i。
//p=10; //error
j=*p;// j=i;
printf("i=%d,j=%d,*p=%d
",i,j,*p);
return 0;
}
:
#include
void fun(int * i)// *i , , i, int*
{
*i=100;
}
int main(void)
{
int i=9;
fun(&i); // 。
printf("i=%d
",i);
}
포인터 와 배열 간 의 관계
배열 이름: 1 차원 배열 이름 은 포인터 변수 입 니 다. 1 차원 배열 의 첫 번 째 요소 의 주 소 를 저장 합 니 다. 그 값 은 바 꿀 수 없습니다. 1 차원 배열 이름 은 배열 의 첫 번 째 요 소 를 가리 키 고 있 습 니 다.결론:
int a[5]={1,2,3,4,5};
Show_Aarry(a,5);//a &a[0],&a[0] int*
void Show_Array(int * p,int len)
{
int i;
//P[2]=-1;//p[0]=*p ; p[2]==*(p+2)==*(a+2)==a[2] ; p[i] a[i]
for (i=0;i
주의:
double *p;
double x=66.6; // double 8
p=&x;//x 8 ,1 8 ,1 ,p ,
double arr[3]={1.1,2.2,3.3};
double *q;
q=&arr[0];
printf(“%p
”,q); //%p
q=&arr[1];
q=printf(“%p
”,q); //p,q 8
메모: 포인터 가 가리 키 는 변수 가 몇 개의 바이트 를 차지 하 든 포인터 변 수 는 4 개의 바이트 만 차지 합 니 다.
어떻게 함 수 를 통 해 실제 인삼 의 값 을 수정 합 니까?
void fun(int **);
int main(void)
{
int i=9;
int *p=&i;// *p;p=&i;
printf(“%p
”,p);
f(&p);
printf(“%p
”,p);
return 0;
}
//void fun(int *q)
//{
// q=(int *)0xffffffff; // , p
//}
void fun(int ** q)
{
*q=(int *)0xffffffff;// 。
}
구조 체 의 사용 개술
왜 구조 체 가 나 타 났 는 지:
#include
#include
//
struct Student
{
int sid;
char name[200];
int age;
}; //
int main(void)
{
struct Student st={1000,”zhagnsan”,20};
printf(“%d,%s%d
,”,st.sid,st.name,st.age);
printf(“%d,%s%d
,”,st); //error
st.sid=99; //
//st.name=”lisi”; //error
strcpy(st.name,”lisi”);
st.age=22;
struct Student*pst;
pst=&st; //
pst->sid=99; //pst-> (*pst).sid, (*pst).sid st.sid, pst->sid st.sid
return 0;
}
주의:
#include
struct Student
{
int sid;
char name[200];
int age;
};
void f(struct Student *pst);
void g(struct Student st);
void g2(struct Student *pst);
int main (void)
{
struct Student st; // st
f(&st);
//g(st);
g2(&st);
// printf(“%d %s %d
”,st.sid,st.name,st.age); //
return 0;
}
void g(struct Student st) // // , , , ,
{
printf(“%d %s %d
”,st.sid,st.name,st.age);
}
void g2(struct Student *pst)
{
printf(“%d %s %d
”,pst->sid,pst->name,pst->age);
}
void f(struct Student *pst)
{
(*pst).sid=99;
strcpy(pst->name,”zhagnsan”);
pst->age=22;
}
malloc () 동적 할당 메모리 개요
#icclude
#include
int main(void)
{
int a[5]={1,2,3,4,5}; //
int len;
printf(“ :len=”);
scanf(“%d”,&len);
int *pArr=(int *)malloc(sizeof(int)*len); //(int *) , pArr 。 pArr
//*pArr=4;// a[0]=4;
// pArr[1]=10;// a[1]=10;
// printf(“%d %d
”,*pArr,pArr[1]);
// pArr
for (int i=0;i
#include
int f();
int main(void)
{
int i=10;
i=f();
printf(“i=%d
”,i);
for(i=0;i<2000;++i)
f();
return 0;
}
int f()
{
int j=20;
return j;
}
#include
int main ()
{
int *p;
fun(&p);
...
}
int fun (int **q)
{
int s; //s 。 s , p
*q=&s;
}
#include
int main()
{
int *p;
fun(&p);
...
}
int fun(int **q)
{
*q=(int *)malloc(4); // 4 , 1 *q,*q==p。 , free(), 。 free(),
}
Java 프로그램 내부 클래스 정의 방법 A aa = new A ();A pa=(A)malloc(sizeof(A));
#include
#include
struct Student
{
int sid;
int age;
}
struct Student * CreatStudent(void);
void ShowStudent(struct Student *);
int main(void)
{
struct Student *ps;
ps=CreatStudent();
ShowStudent(ps);
return 0;
}
struct Student * CreatStudent(void)
{
struct Student *P=(struct Student *)malloc(sizeof(struct Student));
p->sid=99;
p->age=88;
return p;
}
void ShowStudent(struct Student *pst)
{
printf(“%d %d
”,pst->sid,pst->age);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.