NDK01

2020-05-19  本文已影响0人  星云春风

1.数据类型,int,short,long的统一占位符级别都可以使用%d

// 默认定义的变量,就是有符号的
    int age = 99;
     printf("age = %d\n", age);
     short age2 = 80;
     printf("age2 = %hd \n", age2);
     long number = 123445;
     printf("number = %ld\n", number);
     char sex = 'M';
     printf("sex = %c", sex);
 //unsigned修饰的是无符号的
  unsigned int age = 99; //4个字节
    printf("age = %u,占用字节数=%d\n", age, sizeof(age));
    unsigned short age2 = 80; //2个字节
    printf("age2 = %hu,占用字节数=%d \n", age2, sizeof(age2));
    unsigned long number = 123445;  //4个字节,java中是8个字节
    printf("number = %lu,占用字节数=%d\n", number, sizeof(number));
    unsigned char sex = 'M'; //1个字节
    printf("sex = %c,占用字节数=%d", sex, sizeof(sex));
    //这个可以修改字节数
    long long number2 = 123445;  //8个字节 相当于java中的Long
    printf("number = %lu,占用字节数=%d\n", number, sizeof(number2));
 char *str = "这是字符串"; 这种写法是标准
 char * str = "这是字符串";
 char* str = "这是字符串";
  int test[] = {1, 3, 2, 47, 51};
    printf("数组长度: %d\n", sizeof(test));
    for (int i = 0; i < (sizeof(test) / sizeof(int)); ++i) {
        // * 是取出内存地址中的值 ,数组是一块连续的内存空间
        //  printf("test的内容: %d\n", *(test + i));
        //传统方式
        // printf("test的内容: %d\n", test[i]);
        // 数组的内存地址的占位符 %x ,#代表以16位进制展示
        printf("test的内存地址: %#x\n", test+i);
    }
输出结果: 
test的内存地址: 0x61fe00
test的内存地址: 0x61fe04
test的内存地址: 0x61fe08
test的内存地址: 0x61fe0c
test的内存地址: 0x61fe10
 int *p1; //悬空指针  ,这样定义的是在栈区
    // 动态申请的时候,内部会检测,是否还有可用的内存。可能会拿到其他东西剩下的内存,可能会有值,所以要清空
    int *p3 = calloc(10, sizeof(int));//堆中申请的
    //初始化 清空,防止有脏数据
    memset(p3, NULL, 10 * sizeof(int));
    //释放 ,否则不会回收
    free(p3);
    // 释放之后 p3此时是个野指针
    p3 = 0; //置位0,NULL就是0

1 . C是面向过程的,一个一个的函数,没有类,没有面向对象
2 . C++是面向对象的,思想和java一样

上一篇 下一篇

猜你喜欢

热点阅读