位元組是最小的儲存單元。
記憶體單元的編號稱為位址。
直接訪問,間接訪問。
定義變數的記憶體位址
從高向低分配。
指標變數是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 事實上,賦給指標只要是位址就行...