A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是菜鸟ios 中级黑马   /  2016-1-3 21:09  /  1089 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ios小知识
本质上还是一个对象.叫类对象.这个对象的类型:Class
类对象是在程序启动的时候加载的,与对象创建无关.
加载的标志:是load方法.
对象是在它被创建的时候加载的.且必须在类对象加载完成后才会加载.
对象加载会执行initialize方法. 只会在对象第一次创建的时候执行.
init :构造方法
构造方法是在对象被创建的时候执行的.对象每次创建都会执行.
注意:
1.一个类的实例对象被创建,则其父类的对象也会被创建.(直接或间接父类都会被创建)
2.分类的load方法不会覆盖主类的.主类与分类的load方法在程序启动的时候都会执行.
*/
类对象只有一个
Class c=[am class];
//    Class c2=[am2 class];
//    Class c3=[Animal class];
1,类是什么
类的本质其实也是一个对象(类对象);
类对象
1,类对象在程序运行时一直存在。
2,类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本以及消息与函数的映射表等
3,每一个对象都包含一个指向其类对象的isa指针。

2、类对象如何获取
通过实例对象获取
Dog *d1 = [Dog new];
Dog *d2 = [Dog new];
Class c =   [d1 class];
Class c2 = [d2 class];
通过类名获取(类名其实就是类对象)
Class c3 = [ Dog  class ];
因为类对象在整个程序中只存在一份,
所以 c = c2 = c3
3.类对象的使用,如何使用
1)可以用来调用类方法 :
//获取类对象
Class c1 = [Person class];
//使用类对象调用类方法
[c1 test]; // test是一个+号方法
2)可以用来实例化实例对象, 并且调用对象方法
//获取类对象
Class c1 = [Person class];
//使用类对象创建实例对象
Person *p = [c1 new];
[p test];  // -test 调用对象方法
4. 类对象存储细节
通过打印地址分析测试:类对象存在数据段;

SEL类型
SEL是一种新的数据类型。和id、class一样。
Person *p = [Person new];
SEL s1 = @selector(test);
[p performSelector:s1];


注意:
    以下所学的字符串常用函数都在头文件<string.h>中,所以用这些函数之前要导入这个头文件


    1.strcmp:
            用法:int strcmp(字符串1,字符串2);

            两个参数,一个int的返回值:

        作用:
            判断两个字符串是否相同,如果返回0代表两个字符串相同 (实际开发中的用法)

            是比较两个字符串大小的!

            问字符串1比字符串2大吗?大则返回正数,相等则返回0,小于则返回负


        判断用户输入的账号是否等于某个账号
            做登录!!
                如果用户输入的是admin密码是88888,那么就提示登录成功,否则提示登录失败



    2.strcat:
            用法:strcat(字符数组1,字符串2);

        作用:把字符串2加入到字符数组1的实际字符串后面

            比如说前面一个字符数组保存的abc
            字符串2传的是qwe
            那么调用完后,字符数组最终保存的是abcqwe

        注意:字符数组1必须保证长度足够长



    3.strcpy:
            用法:strcpy(字符数组1,字符串2);

        作用:把字符串2复制到字符数组1,会覆盖掉字符数组1原来的内容

            比如说前面一个字符数组保存的是abc
            字符串2是qwe
            那么调用完后字符数组1最终保存的是qwe

        注意:字符数组1的长度必须保证足够长

        应用场景在:给字符数组重新赋值的时候


    4.strlen:
          用法:unsigned long  strlen(字符串);

        作用:计算这个字符串的实际长度,不包括\0

        注意:如果遇到中文或者中文符号,那么中文的实际位数要*3
        strlen的原理是:一直遍历你这个字符串,统计次数,直到遇到\0就结束

*/

#include <stdio.h>
#include <string.h>//要导入


int main(int argc, const char * argv[]) {
   
    //strcmp
    /*
    char str1[10] = "azc";
   
    char str2[] = "zbc";
   
    //数组名就是地址,所以这里比较的是地址是否相同
    if(str1 == str2){
        
        printf("相同\n");
        
    }else{
        
        printf("不相同\n");
    }
   
   
    int res = strcmp(str1, str2);
   
    printf("%d\n",res);//-25
   
    */
   
    //strcat
    /*
//    char str[4] = "abc";
//
//    strcat(str, "qwe");//越界错误
//   
//    puts(str);//abcqwe
   
    char str[] = "abc";//长度为4
   
    strcat(str, "qwe");//
   
    puts(str);//abcqwe
    */
   
    //strcpy
    /*
//    char str[10] = "abc";
//   
//    strcpy(str, "qwe");
//   
//    puts(str);//qwe
   
//    char *str = "abc";
//   
//    strcpy(str, "qwe");//这是错误的
//   
//    puts(str);//qwe
   
//    char str[] = "abc";//4个长度
//    strcpy(str, "qwerty");//运行报错,因为越界
   
   
//    char str[5];
//   
//    strcpy(str,"abc"); //相当于给str赋值
//   
//    puts(str);
   
//    char str[5];
//   
//    str = "abc";//不可以,因为数组名是一个地址常量
   
    char str[5] = "abc";
   
    //此时我想让str里面存的是zxv
   
//    str[0] = 'z';
//    str[1] = 'x';
//    str[2] = 'v';
   
    strcpy(str, "zxv");
    puts(str);
    */
   
    //strlen
    /*
//    char str1[4] = "abc";
//    long len = strlen(str1);
//   
//    printf("len=%ld\n",len);//3
//   
   
//    char *str = "abc";
//    long len = strlen(str);
//   
//    printf("len=%ld\n",len);//3

//    long len = strlen("abc");
//   
//    printf("len=%ld\n",len);//3
   
   
//    char str[10] = "abc\0zxc";
//   
//    long len = strlen(str);
//   
//    printf("len=%ld\n",len);//3
   
   
//    char str[] = "帅哥";//长度为7
//   
//    long len = strlen(str);
//   
//    //中文在MAC里面占用3个字节
//    //因为一个char类型只有1个字节,保存不了3个字节的汉字
//    //char c = '哈'; //这个会报错
//   
//    printf("len=%ld\n",len);//6  在mac下面一个中文字占用3个字节
   
//    char str[] = ",";
//   
//    printf("%lu\n",strlen(str));
   
   
//    char str[] = "abc哈哈哈"; //数组长度那才是13个
//   
//    printf("%lu\n",strlen(str));//12

   
//    char str[] = "班长不要爱我,haha"; //数组长度26
//   
//    printf("%lu\n",strlen(str));//25
    */
   
    return 0;
}

评分

参与人数 1技术分 +3 黑马币 +2 收起 理由
周单玲老师 + 3 + 2

查看全部评分

8 个回复

倒序浏览
海棠依旧2046 来自手机 中级黑马 2016-1-3 22:25:44
沙发
c语言就这么过了,好多东西没弄懂,也不知道后面有没有讲的
回复 使用道具 举报
真心难啊
回复 使用道具 举报
感觉好难啊,没有基础的学习这个需要特别的努力啊!!!!!!!!!!
回复 使用道具 举报
赞一个。。。。。
回复 使用道具 举报
赞一个,加油
回复 使用道具 举报
赞一个,
回复 使用道具 举报
总结的挺全面的
回复 使用道具 举报
表示技术内涵丰富
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马