배열 과 지침 의 본질 적 차이

4127 단어

 
 
배열 은 데이터 구조 이 고 지침 은 진정한 지침 이다.
컴 파일 러 는 배열 의 첫 번 째 요소 의 주 소 를 알 고 있 으 며, 컴 파일 러 는 포인터 변수 가 있 는 주소 만 알 고 있다.
char a[10];
char *p;
char ch;
ch = a [1] 와 ch = * p 의 조작 상의 차이:
컴 파일 러 가 배열 의 내용 을 찾 으 려 면 두 단계 만 필요 합 니 다. 1. 배열 의 첫 번 째 요소 의 주 소 를 가 져 오고 오프셋 을 더 해 주 소 를 만 듭 니 다.2. 이 주소 에서 수치 가 져 오기;
       포인터 의 동작 은 1. 포인터 변수 가 있 는 주 소 를 가 져 오 는 것 입 니 다.2. 포인터 변수의 값 가 져 오기;3. 포인터 변수의 값 을 주소 로 원 하 는 값 을 가 져 옵 니 다.
       두 가지 가 나타 내 는 본질 적 인 차 이 를 알 기 위해 서 는 컴 파일 러 의 차원 에서 고려 하거나 생 성 된 어 셈 블 리 코드 에서 고려 해 야 그 본질 을 인식 할 수 있다. 그렇지 않 으 면 안개 속 에서 꽃 을 볼 수 있다.
 
       C                 。       ,      
。 SP,SP , , SP , SP
, , 。 C
,C SP , 。C
,C89 , 。 ,
, , , 。


, , ? , p &p
,99% 0.1 , , ,

, 。


, 。

。 , ! C
, 。
“ ” , 。 :
“ ” 。

, , , 、
、 ,
。 ,
。 , , ,
! ,
int i=10;
10 , i , i, 10。
, , ,
, ,





( static), , 。
, , , , 。
, 。 , 。
! ,
, , 。
, , , , ,
, , ! ,
, ! int i=10 10 ,


, , , ,


, :
1。 , ?
2。 , ,


,C ,
, ANSI , C ,
, , 。
“ ” ? , ,
, 。 , “ ”
, , 。 ,
“ ” , , ,
, ? “ ”, “
” , ? 。

, , 。C89
: ( ,function designator)
, , ,
。 , , ,
! , :

void fun(int i);

int n fun, fun(n); ,
, 10 , fun(10); ,
, , 10 i, 10
? 。 , i , i int,
i , ,i ,
, , , i , , i
OK 。 , 。
, , ? 、

, !

, , ,
, 。

좋은 웹페이지 즐겨찾기