C 언어 기초 지침 과 배열
4827 단어 C 언어 기초
, C , , 19 push pop , , 。 C 。 C 。 :
- 포인터 초기 화 (정형 포인터) 방법 1:
int *p;
p = (int *)malloc (sizeof(int));
*p = 3;
/ / int (4 바이트) 크기 의 메모 리 를 동적 으로 신청 합 니 다.사용 후 반드시 free 방법 2:
int *p,a;
p = &a;
*p = 3;
2. p 는 a 의 주 소 를 가리킨다.3. p 가 가리 키 는 주소 에 값 부여 하기;즉, a 가 있 는 곳 에서 a 의 값 도 방법 3 을 바 꿀 수 있다.
int a;
int *p = &a;
*p = 3;
방법 3 은 사실 방법 2 의 개작 이다. 같은 잘못된 방법 이라는 뜻 이다.
int *p = 3;
int *p;
*p = 3;
1. 잘못된 경우, 이때 p 가 가리 키 는 주 소 는 무 작위 2.3. / * 와 마찬가지 로 잘못된 것 입 니 다. p 는 3 이 있 는 주 소 를 가리 키 기 때 문 입 니 다. * p = 3 은 p 가 가리 키 는 메모리 에 값 을 부여 하지만 p 는 할당 되 지 않 았 기 때문에 p 가 가리 키 는 메모리 위 치 는 무 작위 이 고 초기 화 되 지 않 았 습 니 다. * / -포인터 할당
int *p;
int a;
int b[1];
p = &a;
p = b;
포인터 의 할당: "=" 의 왼쪽 동작 수 는 * p 일 수도 있 고 p 일 수도 있 습 니 다.왼쪽 조작 수가 * p 일 때 p 가 가리 키 는 주소 에 저 장 된 데 이 터 를 변경 합 니 다.(초기 화 시 int * p = 0; p 포인터 가 비어 있다 는 뜻) 왼쪽 동작 수가 p 일 때 p 가 가리 키 는 주 소 를 바 꿉 니 다.
- 문자열 과 포인터 의 초기 화 및 할당 초기 화:
char *p="zhangzhitong";
이것 은 문자열 을 전달 하 는 값 이 아니 라 포인터 p 를 문자열 의 첫 주 소 를 가리 키 는 초기 화 과정 입 니 다.C 언어 에 서 는 문자열 을 전체적으로 처리 하 는 메커니즘 이 없 기 때문이다.
할당:
char *p;
p="abcdef";
*p=”abcdef” ;//오류, 문자열 상수 가 첫 번 째 주 소 를 전달 합 니 다. * p 를 통 해 문자열 의 값 을 수정 할 수 없습니다. 문자열 을 상수 로 바 꾸 었 기 때문에 간단 한 포인터 가 문자열 상수 로 바 뀌 었 을 뿐 입 니 다.char 포인터 가 가리 키 는 데 이 터 는 구체 적 인 원인 을 수정 할 수 없습니다.http://blog.csdn.net/on_1y / article / details / 13030439 예:
char *p = "zhuxinchen";
printf("%s
",p);
printf("%c
",*p); // %c, %s
zhuxinchen z 로 출력 되 는 * p 는 p [0] 에 해당 합 니 다.
메모: (함수 호출 시 문자열 포인터 파 라 메 터 를 사용 할 때 문자열 의 첫 주 소 를 형 매개 변수 에 할당 합 니 다.)
- 주소 전달 void swap (int * p, int * q) {int temp; temp = * p; * p = * q; * q = temp;} 이 함 수 를 사용 할 때 주소 가 바 뀝 니 다.예 를 들 어 swap (& a, & b), gets () 함수 의 사용:
char str1[5]; // char*p, gets(p), , p , // , ,
gets(str1);
printf("%s
", str1);
return 0;
- 보충 과 설명
char *p;
while(1){
p=malloc(1);
*p = 0;
}
이 코드 에 문제 가 있 습 니 다: p 의 유형 은 무엇 입 니까? 흔히 볼 수 있 는 c 표준 라 이브 러 리 의 malloc 함 수 는 공간 이 부족 할 때 0 으로 돌아 갑 니 다. (NULL)그러나 프로그램 이 종료 되 지 는 않 습 니 다. 0 주 소 를 기록 할 때 메모리 반환 오류 가 발생 하여 프로그램 을 종료 시 킬 수 있 습 니 다. 따라서 프로그램 을 종료 할 때 메모리 가 부족 하 다 는 것 을 알 리 지 않 고 접근 하지 말 아야 할 메모리 에 접근 했다 는 것 입 니 다. 그러나 이 말 들 은 운영 체제 에 따라 다 릅 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
c 언어는 피보나치 수열의 n위 숫자를 구한다1. 귀속적인 방법으로 주의해야 할 것은 귀속 방식을 사용하면 이해하기 쉬워 보이지만 연산량이 많다는 것이다.(큰 숫자를 입력할 때 이 방법을 권장하지 않음) 연산량은 지수식으로 증가한다. 2. 함수로 하는 방법; ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.