c语言书面作业9,九、C语言基础

九、C语言基础

安卓学习笔记

JNI java本地开发接口,是一个协议。

如何使用:

1.Java语言

2.c/c++语言

3.Java jni流程

4.NDK(开发工具)#include //standard input output

#include

这两个就相当于导包!!!

system("pause");//编译运行时暂停窗口查看运行结果public class Hello{//类名一定要与文件名一致!!

public static void main(String[] dd){

system.out.println("hello wq");

}

}

启动cmd...在要编译的文件所在文件夹内按Shift+右键,打开编译窗口,

再javac Hello.java再java Hello即可!!!

c调用Java的Hello#include

#include

main(){

printf("hello from c\n");

system("java Hello");//调用Java代码

system("pause");

}

c的基本数据类型#include

#include

main(){

int i=3;

char c='a';

signed int i=30;

system("pause");

}int :32位,能表示的数字是2的32次方个

最高位用来表示符号位,那么还剩下31位可以表示数值,

所以能表示的数字就是2的31次方个

int 的表示范围:-2的31次方~2的31次方

当最高位是0时,0-2147483647

当最高位是1时,-2147483648~-1

java的基本数据类型长度byte:1

short:2

int:4

long:8

boolean:1

char:2

float:4

double:8

printf("char的长度:%d",sizeof(char));//1

printf("int的长度:%d",sizeof(int));//4

printf("float的长度:%d",sizeof(float));//4

printf("double的长度:%d",sizeof(double));//8

printf("long的长度:%d",sizeof(long));//4

printf("short的长度:%d",sizeof(short));//2

printf("long long的长度:%d",sizeof(long long));//8

C语言输出函数%x :十六进制数

%#x:十六进制数,外带一个Ox(十进制数符号)

char arr[]="吴庆";

printf("%s\n",arr);

C语言输入函数char name[8];

scanf("%s",&name);

内存地址的概念int i=9;printf("%#x\n",&i);

修改的概念工具:cheat Engine!!!

main(){

int i;

for(i=100;i>0;i--){

printf("时间剩余:%d\n",i);

sleep(2000);//睡2秒哈哈

}

system("pause");

}

指针的常见错误int* p;//野指针:没有赋值的指针;

*p=23;//错误

int i=23;

p=&i;

printf("%#x\n",p);

值传递和引用传递引用调用函数要加&。相当于只是起个小名。

返回多个值void function(int* p,int* q)

{

*p+=15;

*q+=15;

}

main(){

int i=10;

int j=20;

function(&i,&j);

//输出i,j都变了。

system("pause");

}

在主函数中获取子函数的地址void function(int** p){//p的值就是mainp地址

int i=3;

printf("i的地址为%#x\n",%i);

*p=&i;

}

main(){

int* mainp;

function(&mainp);

printf("主函数中获取i的地址为%#x\n",mainp);

system("pause");

}

数组入门char arr[]="hello";

&arr=&arr[0]数组地址和第一个元素地址一样。

char* p=&arr;

printf("%c\n",*p);//输出h

printf("%c\n",*(p+1));//输出e

指针长度

指针的长度都是4个字节char* cp;

int* ip;

short* lizhip;

printf("%d\n",sizeof(cp));//输出4

printf("%d\n",sizeof(ip));//输出4

printf("%d\n",sizeof(lizhip));//输出4

堆内存和栈内存的概念

堆内存:后进先出(不连续的内存区域,用链表来表示。)

p=new Person();

栈:由系统自动分配。自动释放。

堆:需要程序员自己申请,并指明大小,在C中用Malloc函数。

char* p=(char*)malloc(10);//14byte(指针占4字节)

在windows下,栈大小是2M。

栈上分配的内存,编译器会自动收回;(静态内存分配)

堆上分配的内存,要通过free来显式地收回,否则会造成内存泄漏。(动态内存分配)

动态内存分配

加入#includemain(){

int i=3;

int arr[10];

int* p=malloc(sizeof(int)*10);

*p=10;

*(p+1)=20;

printf("%d\n",*p);

free(p);

}

学号管理系统

加入#includemain(){

printf("请输入学生人数:");

int count;

scanf("%d",&count);

int* p=malloc(sizeof(int)*count);

//根据学生人数去动态申请堆内存

int i;

for(i=0;i

printf("请输入第%d个学生学号:",i);

scanf("%d",p+i);

}

printf("请输入新增学生人数:");

int newcount;

scanf("%d",&newcount);

p=realloc(p,sizeof(int)*(count+newCount));

for(i=count;i

printf("请输入第%d个学生学号:",i);

scanf("%d",p+i);

}

for(i=0;i

printf("第%d个学生学号是:%d\n",i,*(p+i));

}

system("pause");

}

多级指针int i=2;

int* p=&i;

int** q=&p;

int*** l=&q;

printf("i的值为%d\n",*p);

printf("i的值为%d\n",*(*q));

printf("i的值为%d\n",*(*(*l)));

结构体的定义

include

includevoid study(){

printf("吃饭睡觉打李志\n");

}

//定义一个结构体

struct student{

int age;

int height;

char sex;

//结构体中不能定义函数,但可以定义函数指针

void (*studyP)();

}

main(){

//定义结构体的变量

struct student st = {20, 180, 'm', study};

printf("%d\n", st.age);

printf("结构体的长度%d\n", sizeof(st));

//调用函数指针有三种写法

st.studyP();

struct student* stp = &st;

(*stp).studyP();

stp->studyP();

system("pause");

}

联合体#include

#include

main(){

//定义一个联合体

union{long long i; short s; char c} un;

un.i = 3;

printf("%d\n", un.i);

printf("联合体的长度%d\n", sizeof(un));

system("pause");

}

枚举& 自定义类型

includeenum WeekDay

{

Monday = 10,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday

};

int main(void)

{

//int day;

enum WeekDay day = Sunday;

printf("%d\n",day);

system("pause");

return 0;

}

#include

#include

typedef int haha;

main(){

haha i = 3;

printf("%d\n", i);

system("pause");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值