指针学习
int a= 10 ;
int b= 20 ;
int * p= & a;
* p= 100 ;
printf ( "a=%d,*p=%d\n" , a, * p) ;
p= & b;
* p= 200 ;
printf ( "b=%d,*p=%d\n" , b, * p) ;
double * p;
int a= sizeof ( int * ) ;
int b= sizeof ( char * ) ;
int c= sizeof ( p) ;
printf ( "a=%d,b=%d,c=%d\n" , a, b, c) ;
void * p= NULL ;
int a= 10 ;
p= & a;
printf ( "*p=%d\n" , * ( int * ) p) ;
int a= 10 ;
const int * p2= & a;
int * const p3= & a;
p2= NULL ;
* p3= 100 ;
int a[ ] = { 1 , 2 , 3 , 4 , 5 } ;
int * p= NULL ;
int i;
p= & a[ 0 ] ;
for ( i= 0 ; i< 5 ; i++ ) {
printf ( "%d," , * ( p+ i) ) ;
}
int a[ ] = { 0 , 1 , 2 } ;
int * p[ 3 ] ;
int i;
for ( i= 0 ; i< 3 ; i++ ) {
p[ i] = & a[ i] ;
}
for ( i= 0 ; i< 3 ; i++ ) {
printf ( "%d," , * ( p[ i] ) ) ;
}
* /
return 0 ;
int swap ( int * a, int * b) {
int t;
t= * a;
* a= * b;
* b= t;
printf ( "swap:a=%d,b=%d\n" , * a, * b) ;
return 0 ;
}
int main ( ) {
int a= 10 ;
int b= 20 ;
swap ( & a, & b) ;
printf ( "main:a=%d,b=%d\n" , a, b) ;
return 0 ;
}
形参中的数组:形参中的数组是指针变量;int a[],int *a,int a[1000]是等价的。
void printArrary ( int * a, int n)
{
int i= 0 ;
for ( i= 0 ; i< n; i++ ) {
printf ( "%d," , a[ i] ) ;
}
printf ( "\n" ) ;
}
int main ( )
{
int a[ ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } ;
int n= sizeof ( a) / sizeof ( a[ 0 ] ) ;
printArrary ( a, n) ;
return 0 ;
}
int main ( )
{
char str[ ] = "hello" ;
char * p= NULL ;
str[ 0 ] = '1' ;
* ( str+ 1 ) = '2' ;
printf ( "%s\n" , str) ;
p= & str[ 0 ] ;
* p= 'a' ;
p++ ;
* p= 'b' ;
printf ( "str=%s\n" , str) ;
printf ( "p=%s\n" , p-- ) ;
}
char * MyStrCpy ( char * dest, char * scr) {
int i= 0 ;
while ( * ( scr+ i) != '\0' ) {
* ( dest+ i) = * ( scr+ i) ;
i++ ;
}
* ( dest+ i) = '\0' ;
return dest;
}
int main ( ) {
char src[ ] = "hello world" ;
char dest[ 1000 ] ;
MyStrCpy ( dest, src) ;
printf ( "%s\n" , dest) ;
return 0 ;