• JNI 学习笔记系列(二)


    c中没有Boolean类型的值,一般是使用1表示true,0表示false,c中也没有String类型的数据,c中的字符串要通过char数组来表示。c中没有byte类型,一般用char表示byte类型。

    先看看c中数据类型长度:

    # include<stdio.h>
    # include<stdlib.h>
    main(){
           printf("char类型的长度为:%d
    ",sizeof(char));
           printf("int类型的长度为:%d
    ",sizeof(int));
           printf("double类型的长度为:%d
    ",sizeof(double));
           printf("float类型的长度为:%d
    ",sizeof(float));
           printf("long类型的长度为:%d
    ",sizeof(long));
           printf("short类型的长度为:%d
    ",sizeof(short));
           printf("signed int类型的长度为:%d
    ",sizeof(signed int));
           printf("unsigned int类型的长度为:%d
    ",sizeof(unsigned int));
           system("pause");
           }
    

    signed和unsigned 表示数据类型的修饰符,它们只能修饰整数类型的数据。

    再来看看c中的输入输出:

    # include<stdio.h>
    # include<stdlib.h>
    main(){
           int i = 3;
           float f = 3.14159;
           double d = 6.2815;
           char c = 'A';
           short s = 2;
           printf("int i=%d
    ",i);
           printf("float f=%f
    ",f);
           printf("double d=%lf
    ",d);
           printf("char c=%c
    ",c);
           printf("short s=%d
    ",s);
           //从键盘接受一个字符串
           char arr[20]; 
           scanf("%s",arr);
           printf("arr为%s
    ",arr);
    
           int j;
           scanf("%d",&j);
           printf("j=%d
    ",j); 
           system("pause");
           }

    指针:
    *的几种含义:
    1.*放在某种数据类型的后面,代表就是这种数据类型的指针
    2.* 代表一个乘法符号
    3.* 放在一个指针变量前面代表这个指针变量所存放的地址对应的数据。

    # include<stdio.h>
    # include<stdlib.h>
    main(){
           int i = 5;
           int* p = &i;
           printf("%d
    ",*p);
           system("pause");
           }

    运行结果:
    这里写图片描述

    这里写图片描述

    由上图可以看出,p和i是两个完全不相同的变量,p的改变不会影响i,i的改变也不会影响p;但是*p和i则是同一个值,更改*p会影响i,同理,更改i也会影响*p.

    通过子函数来修改主函数中变量的值。

    # include<stdio.h>
    # include<stdlib.h>
    
    void swap(int* p,int* q){
         int temp = *p;
         *p = *q;
         *q = temp;
         }
    main(){
           int i = 5;
           int j = 3;
           printf("修改之前的变量值
    i=%d
    j=%d
    ",i,j);
           swap(&i,&j);
           printf("修改之后的变量值
    i=%d
    j=%d
    ",i,j);
           system("pause");
           }

    这里写图片描述

    把i和j对应的地址传递给swap函数,*p和*q分别代表变量i和j的地址所对应的变量值,在swap函数中,通过直接操作变量的地址所对应的变量值来交换两个变量之间的值。

    指针变量常见错误:
    1.指针变量未赋值(野指针)不可使用
    2.不相符合的指针类型不可互传。比如以下代码错误:

    int i = 9;
           char* c;
           printf("%c
    ",*c);

    指针不可以访问被系统回收的变量,子函数调用完毕之后,函数体内的所有局部变量会被系统回收。

    数组中arr[i] 、*(arr+i)表示同一个变量。数组是一块连续的内存空间,数组名是首地址。

  • 相关阅读:
    M1卡的工作原理【转】
    磁卡ID卡IC卡的区别【转】
    磁卡结构【转】
    M1卡破解(自从学校升级系统之后,还准备在研究下)【转】
    RunJS演示代码
    Linux中inet_aton的问题(IP转整数)
    使用Hive UDF和GeoIP库为Hive加入IP识别功能
    hive下UDF函数的使用
    linux下smb
    使用Spring MVC表单标(转)
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461876.html
Copyright © 2020-2023  润新知