JNI 学习笔记系列(二)

举报
江南一点雨 发表于 2021/08/17 00:28:45 2021/08/17
【摘要】 c中没有Boolean类型的值,一般是使用1表示true,0表示false,c中也没有String类型的数据,c中的字符串要通过char数组来表示。c中没有byte类型,一般用char表示byte类型。 先看看c中数据类型长度: # include<stdio.h> # include<stdlib.h> main(){ printf("ch...

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"); }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

# include<stdio.h>
# include<stdlib.h>
main(){ int i = 5; int* p = &i; printf("%d\n",*p); system("pause"); }
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

这里写图片描述

由上图可以看出,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"); }
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

这里写图片描述

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

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

int i = 9; char* c; printf("%c\n",*c);
  
 
  • 1
  • 2
  • 3

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

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

文章来源: wangsong.blog.csdn.net,作者:_江南一点雨,版权归原作者所有,如需转载,请联系作者。

原文链接:wangsong.blog.csdn.net/article/details/45267655

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。