iOS入门(十)指针

字节是最小的存储单元。 
内存单元的编号称为地址。 
直接访问,间接访问。
定义变量的内存地址    从高向低分配。
指针变量是c语言中存储地址的变量。
定义指针变量    :   int * p = NULL ;
指针的重指向
指针变量所占内存大小取决于操作系统位数(32位系统指针占4个字节)
不同类型的指针区别在于  自增运算时指针移动字节数和用*取值时取的字节数目。

    int a = 

    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 = ;

    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) != ) {

            return *s - * t;

        }

        s ++ ;

        t ++ ;

    }

    return ;

}

 



 

//    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] ) ;

//    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值