JNI 学习笔记系列(二)
2023-09-27 14:27:41 时间
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\n",sizeof(char));
printf("int类型的长度为:%d\n",sizeof(int));
printf("double类型的长度为:%d\n",sizeof(double));
printf("float类型的长度为:%d\n",sizeof(float));
printf("long类型的长度为:%d\n",sizeof(long));
printf("short类型的长度为:%d\n",sizeof(short));
printf("signed int类型的长度为:%d\n",sizeof(signed int));
printf("unsigned int类型的长度为:%d\n",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\n",i);
printf("float f=%f\n",f);
printf("double d=%lf\n",d);
printf("char c=%c\n",c);
printf("short s=%d\n",s);
//从键盘接受一个字符串
char arr[20];
scanf("%s",arr);
printf("arr为%s\n",arr);
int j;
scanf("%d",&j);
printf("j=%d\n",j);
system("pause");
}
指针:
*的几种含义:
1.*放在某种数据类型的后面,代表就是这种数据类型的指针
2.* 代表一个乘法符号
3.* 放在一个指针变量前面代表这个指针变量所存放的地址对应的数据。
# include<stdio.h>
# include<stdlib.h>
main(){
int i = 5;
int* p = &i;
printf("%d\n",*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("修改之前的变量值\ni=%d\nj=%d\n",i,j);
swap(&i,&j);
printf("修改之后的变量值\ni=%d\nj=%d\n",i,j);
system("pause");
}
把i和j对应的地址传递给swap函数,*p和*q分别代表变量i和j的地址所对应的变量值,在swap函数中,通过直接操作变量的地址所对应的变量值来交换两个变量之间的值。
指针变量常见错误:
1.指针变量未赋值(野指针)不可使用
2.不相符合的指针类型不可互传。比如以下代码错误:
int i = 9;
char* c;
printf("%c\n",*c);
指针不可以访问被系统回收的变量,子函数调用完毕之后,函数体内的所有局部变量会被系统回收。
数组中arr[i] 、*(arr+i)表示同一个变量。数组是一块连续的内存空间,数组名是首地址。
相关文章
- 神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火
- 我的solr学习笔记--solr admin 页面 检索调试
- Docker学习笔记2
- 【学习笔记16】JavaScript函数封装习题
- 【学习笔记37】BOM基本认识
- Dubbo -- 系统学习 笔记 -- 示例 -- 参数验证
- struts2学习笔记(3)---Action中訪问ServletAPI获取真实类型的Servlet元素
- 机器学习笔记之贝叶斯线性回归(二)推断任务推导过程
- 机器学习笔记之变分推断(五)重参数化技巧
- Logic Programming With Prolog学习笔记(一)
- Lucene in action 笔记 search篇
- 统计学习方法笔记 -- KNN
- Shiro学习笔记_02:shiro的认证+shiro的授权
- HTML5与CSS3权威指南笔记案例1
- Angular学习笔记
- iOS学习笔记—ViewController/生命周期
- JavaScript权威指南学习笔记2
- SwiftUI进阶之 10 软件APP到底是什么 (《SICP》学习笔记)
- opencv学习笔记——FileStorage类的数据存取操作
- MySQL Group Replication 学习笔记
- ESP8266接入腾讯云开发笔记(二)创建云端产品与设备
- Elk使用笔记(坑)(2017-02-17更新)
- Selenium2 Python 自己主动化測试实战学习笔记(五)
- Linux学习笔记(14)linux在6.x和7.x系列的安装与基本使用区别
- 学习笔记(11):Python网络编程&并发编程-粘包底层原理分析
- HTML5 + CSS3 学习笔记(一)
- Arduino学习笔记76
- 《HRNet:Deep High-Resolution Representation Learning for Human Pose Estimation》论文笔记