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 주 소 를 기록 할 때 메모리 반환 오류 가 발생 하여 프로그램 을 종료 시 킬 수 있 습 니 다. 따라서 프로그램 을 종료 할 때 메모리 가 부족 하 다 는 것 을 알 리 지 않 고 접근 하지 말 아야 할 메모리 에 접근 했다 는 것 입 니 다. 그러나 이 말 들 은 운영 체제 에 따라 다 릅 니 다.

좋은 웹페이지 즐겨찾기