재밌는 코드 하나.

1258 단어 code
1. 예:
int i, arr[10], *p=arr;
분리하면 다음과 같다.
int i;
int arr[10];
int *p = arr;
 
여기 int*p = arr;다음과 같습니다.
  
int *p;
p = arr;
 
즉, 값을 부여할 때 *p는 바늘 변수일 뿐이고 p=arr가 그 값을 부여하는 문장이다.
 
초기화 안의 * 번호는 이 변수가 바늘 형식인 int*a를 표시하고 a는 (int*) 형식으로 초기화에 있지 않으며 *a는 가리키는 메모리 단원에 저장된 값을 표시합니다
*p는 수조의 첫 번째 원소, 즉arr[0]를 나타낸다.
int main()

{

    int **p;

    int a;

    

    *p = &a;

    

    printf("%x
", p); } // int main() { int *p; int a; p = &a; printf("%x
", p); } //

 
이것도 제가 프로그래밍을 하면서 겪은 문제예요.
 
int main()

{

  int **p2;

  int *p1;

  p2=&p1; //p2               ,   *p2         ,           



  //            





  int a;

    

  *p2 = &a;

    

  printf("%x
", p1); return 0; }

 
바늘을 초기화하지 않고 값을 부여하는 작업을 하면 위험합니다. 또한 초기화하더라도 유효한 주소를 초기화해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다. 왜냐하면 **p는 2차원 바늘이기 때문입니다. 당신은 *p=&a를 쓰십시오.*p를 초기화할 뿐입니다. 그러나 *p를 초기화하지 않았기 때문에 오류가 발생했습니다.**p는 2차원 포인터이기 때문에 2차원을 가리키는 변수입니다
말하자면 *p는 하나의 메모리를 가리키고 **p는 다른 메모리를 가리키며 당신은 *p만 값을 주고 **p는 값을 주지 않습니다.그래서 가방이 초기화 오류가 없었어요.

좋은 웹페이지 즐겨찾기