iOS入門(十)指標

2021-07-04 12:01:31 字數 2960 閱讀 3667

位元組是最小的儲存單元。 

記憶體單元的編號稱為位址。 

直接訪問,間接訪問。

定義變數的記憶體位址  

從高向低分配。

指標變數是c語言中儲存位址的變數。

定義指標變數  

:  int * p = null ;

指標的重指向

指標變數所佔記憶體大小取決於作業系統位數(32位系統指標佔4個位元組)

不同型別的指標區別在於  自增運算時指標移動位元組數和用*取值時取的位元組數目。

int a = 3 ; 

int * p = & a ;

printf("%d\n" ,*p) ;

p ++ ;

printf( "%p\n" , p ) ;

printf( "%lu\n" ,sizeof(int *)) ;

指標和陣列的關係  

指標可以當陣列名使用

int array[5] = ;

int * p = array ;

printf( "%d\n" , array[1]) ;

printf( "%d\n" , p[1]) ;

printf( "%d\n" , *(p+1)) ;

printf( "%d\n" , *(array+1)) ;  

四個結果相同

char * s = " iphone "  

指標指向常量區(常量區內容不可改)

陣列指標   指標陣列

int mystrlen( char * s )

int lenth = 0 ;

while ( * s != '\0' )

return lenth;

char  * mystrcpy (char *s ,char * t )

while ( ( *s ++ = * t ++ ) != '\0' );

return s ;

void mstrcpy (char *s ,char * t )

while ( *t != '\0' )

*s++  = * t ++ ;

*s = '\0';

//void mystrcat ( char * s , char * t )

//  int a = (int)strlen (s);

//  s += a;

//  while ((*s ++ = * t ++ ) != '\0')

void mystrcat ( char * s , char * t )

while ( *s != '\0')

mystrcpy(s, t);

void mystrcat1(char* a,char* b)

while (1)

else

a ++ ;

}while ((*a++=*b++)!='\0');

int  mystrcmp ( char * s , char * t )

while ( *s != '\0')

s ++ ;

t ++ ;

}return 0 ;

// int a = 3 ;

//  int * p = & a ;

//  printf("%d\n" ,*p) ;

//  p ++ ;

//  printf( "%p\n" , p ) ;

//  printf( "%lu\n" ,sizeof(int *)) ;

// int array[5] = ;

//  int * p = array ;

//  printf( "%d\n" , array[1]) ;

//  printf( "%d\n" , p[1]) ;

//  printf( "%d\n" , *(p+1)) ;

//  *(p +1 ) = 2;

//  printf( "%d\n" , *(array+1)) ;

//  

int array[5] = ;

//  int * p = array;

//  printf( " %p \n" , &array + 1 ) ;

//  printf( " %p \n" , p ) ;

// char str = "iphone4s" ;

//  char * p = str ;

//  printf( "%s \n" , p ) ;

//  while ( *p != '\0' )

//  printf( " \n " ) ;

//  char str = "iphone4s" ;

//  char * p = str ;

//  printf( "%d \n" , mystrlen(p) ) ;

//  printf( " \n " ) ;

// char str1[10 ] ;

//  mystrcpy(str1, p);

//  printf( "%s \n" , str1) ;

//  mstrcpy(str1, p ) ;

//  printf( "%s \n" , str1) ;

// char str2[10] = ;

// // 

mystrcat(str2, p);

//  printf( "%s \n" ,str2) ;

//  mystrcat1 (str2, p);

//  printf( "%s \n" ,str2) ;

//  printf( "%d \n" , mystrcmp(str2, p));

// char * strings[3] = ;

//  for ( int i = 0 ;  i < 2 ;  i ++ )

//  }

//  }

//  for ( int i = 0 ;  i < 3 ;  i ++ )

翁愷老師C語言學習筆記(十)指標 指標與陣列

當我們向一段函式傳入陣列變數,引數接收到的是值,如果我們傳入指標時,引數接收到的是也是值 乙個位址 如果傳入函式的是乙個普通變數,它接收到的是乙個值 如果傳入函式的是乙個指標,它接收到的也是乙個值 位址 如果傳入的是乙個陣列,它接收到的是什麼?我們來看個例子 include void minmax ...

C 入門 2 指標

電腦程式在儲存資料時必須跟蹤以下3個屬性 include int main 輸出如下,顯示位址時,該實現的cout使用十六進製制法,因為這時常用於描述記憶體的表示法。a value 6 anda address is 0x7ffedf68996c b value 4.5 and b address ...

c 入門008 指標

指標是乙個變數,其儲存的是值的位址。1.宣告 初始化 賦值 int pt 指標pt指向int型別 總有人瞎定義 int pt,py 創造乙個指標pt和乙個int變數py 初始化 int yang 5 int pt yang 2.指標的危害 int pt pt yang 事實上,賦給指標只要是位址就行...