int a = 3 ;
int * p = & a ;
printf("%d\n" ,*p) ;
p ++ ;
printf( "%p\n" , p ) ;
printf( "%lu\n" ,sizeof(int *)) ;
指针和数组的关系 指针可以当数组名使用
int array[5] = { 3,5,1,7,9};
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' ) {
s ++ ;
lenth ++ ;
}
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') {
// *s = * t;
// }
//}
void myStrcat ( char * s , char * t )
{
while ( *s != '\0') {
s ++ ;
}
myStrcpy(s, t);
}
void mystrcat1(char* a,char* b)
{
while (1)
{
if (*a == '\0' ) {
break;
}
else
a ++ ;
}
while ((*a++=*b++)!='\0');
}
int myStrcmp ( char * s , char * t )
{
while ( *s != '\0') {
if ((*s-*t) != 0 ) {
return *s - * t;
}
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] = { 3,5,1,7,9};
// 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] = { 3,5,1,7,9};
// 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( "%c" , *p ++);
// p ++ ;
// }
// 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] = {0};
// char str2[20] = "apple";
// myStrcat(str2, p);
// printf( "%s \n" ,str2) ;
// mystrcat1 (str2, p);
// printf( "%s \n" ,str2) ;
// printf( "%d \n" , myStrcmp(str2, p));
// char * strings[3] = { "iPhone" , "Android" , "win8"};
// for ( int i = 0 ; i < 2 ; i ++ ) {
// for ( int j = 0 ; j < 2-i; j ++ ) {
// if (myStrlen(strings[j]) > myStrlen(strings[j+1])) {
// char * temp = strings[j] ;
// strings [j] = strings [j+1];
// strings[j+1] = temp;
// }
// }
// }
// for ( int i = 0 ; i < 3 ; i ++ ) {
// printf(" %s\n" , strings[i] ) ;
// }