*含义

1.乘法 3*5
2.定义指针变量 int * p;//定义了一个名字叫p的变量,能够存放int数据类型的地址
3.指针运算符,
//如果p是一个已经定义好的指针变量则*p表示以p的内容为地址的变量

  打印数据类型

%d  -  int
%ld – long int
%c - char
%f - float
%lf – double
%x – 十六进制输出 int或者long int或者short int
%o - 八进制输出
%s – 字符串

  3、指针

指针就是地址. 热身小程序 介绍指针
int * p; //p是变量的名字, int * 表示p变量的数据类型是存放int类型的地址的数据类型
//int * p; 不表示定义了一个名字叫做*p的变量
// int * p; 应该这样理解: p是变量名, int *是数据类型 ,p变量的数据类型是int*
//所谓int * 类型 实际就是存放int变量地址的类型
int i = 3;
p = &i;
/*1. p保存了i的地址, 因此p指向i
2. p不是i,i也不是p,修改p的值不影响i的值,修改i的值也不会影响p的值
3. 如果一个指针变量指向了某个普通变量, 则 *指针变量 就完全等同于 普通变量
例子:
如果p是个指针变量,并且p存放了普通变量i的地址则p指向了普通变量i
*p 就完全等同于 i
在所有出现*p的地方都可以替换成i
在所有出现i的地方都可以替换成*p
*p 就是以p的内容为地址的变量*/
j = *p; //等价于 j = i;
printf("i = %d, j = %d\n", i, j);

  4、指针与数组

数组名,下标和指针的关系,指针变量的运算
数组名
int a[5] //a是数组名,5是数组的大小,元素个数
int a[3][4] // 3行4列 a[0][0]就是数组的第一个元素
Int b[5]
A=b ;//错误 一维数组名是个指针常量,它存放的是一维数组第一个元素的地址
int a[5];
int a[3][4];
printf("%#X\n",&a[0]);
printf("%#X\n",&a);
下标和指针的关系
如果p是个指针变量 则p[i] 等价于 *(p+i)

  5、动态分配内存

动态内存分配问题
传统数组的缺点
1.数组长度必须实现指定,
并且只能是常整数.
int a[5];
int len;
int a[len];//error
2.传统形式的数组,程序员没法手动释放空间
数组一旦定义,系统为该数组分配的空间一直存在
函数运行完毕,数组的空间就被释放
3.数组的长度不能在函数运行中动态增加或者缩小
4.A函数定义的数组只有在A没执行完毕前被使用,a函数运行完毕后,a的数组就无法被其他函数使用
# include <stdio.h>
# include <malloc.h> //不能省 malloc 是 memory(内存) allocate(分配)的缩写
int main(void)
{
int i = 5; //分配了4个字节 静态分配 11 行
int * p = (int *)malloc(4); //12行
/*
1. 要使用malloc函数,必须添加malloc.h这个头文件
2. malloc函数只有一个形参,并且形参是整型
3. 4表示请求系统为本程序分配4个字节
4. malloc函数只能返回第一个字节的地址
5. 12行分配了8个字节, p变量占4个字节, p所指向的内存也占4个字节
6. p本身所占的内存是静态分配的, p所指向的内存是动态分配的
*/
*p = 5; //*p 代表的就是一个int变量, 只不过*p这个整型变量的内存分配方式和11行的i变量的分配方式不同
free(p); //freep(p)表示把p所指向的内存给释放掉 p本身的内存是静态的,不能由程序员手动释放,p本身的内存只能在p变量所在的函数运行终止时由系统自动释放
printf("大家好!\n");
return 0;
}

6、函数指针

1.定义int (*pf)(int x, int y);
2.赋值 pf = add;
3.引用 pf(3,5);

android jni 之C语言基础的更多相关文章

  1. 八、android jni 之C语言基础

    *含义 1.乘法 3*5 2.定义指针变量 int * p://定义了一个名字叫p的变量,能够存放int数据类型的地址 3.指针运算符, //如果p是一个已经定义好的指针变量则*p表示以p的内容为地址 ...

  2. JNI由浅入深_2_C语言基础

    *含义 1.乘法 3*5 2.定义指针变量 int * p://定义了一个名字叫p的变量,能够存放int数据类型的地址 3.指针运算符, //如果p是一个已经定义好的指针变量则*p表示以p的内容为地址 ...

  3. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  4. [ 转载 ] Android JNI(一)——NDK与JNI基础

    Android JNI(一)——NDK与JNI基础 隔壁老李头 关注  4.4 2018.05.09 17:15* 字数 5481 阅读 11468评论 8喜欢 140 本系列文章如下: Androi ...

  5. Android JNI(一)——NDK与JNI基础

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  6. Android之——JNI配置C语言打印Logcat信息

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47425073 这篇文章给大家介绍一下在JNI中怎样为C语言配置打印Logcat信息 ...

  7. Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

    Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...

  8. 【转】android JNI

    原文网址:http://jinguo.iteye.com/blog/696185 Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码 ...

  9. Android JNI学习(二)——实战JNI之“hello world”

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

随机推荐

  1. spring-data-elasticsearch使用笔记

    使用spring-data遇到了一些问题,记录一下. spring-data-elasticsearch版本选择 这里有一份官方github上的spring-data-elasticsearch与el ...

  2. Zoj 3870——Team Formation——————【技巧,规律】

    Team Formation Time Limit: 3 Seconds      Memory Limit: 131072 KB For an upcoming programming contes ...

  3. 【转】常用的邮箱服务器(SMTP、POP3)地址、端口

    gmail(google.com)POP3服务器地址:pop.gmail.com(SSL启用 端口:995)SMTP服务器地址:smtp.gmail.com(SSL启用 端口:587) 21cn.co ...

  4. hadoop 天气案例

    对下面一组气温数据进行处理,得到每个月份最高的两个气温值 2018-12-12 14:30 25c2018-12-12 15:30 26c2017-12-12 12:30 36c2019-01-01 ...

  5. ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)

    概述 安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问题.本篇主要包括以下几个内容 : 认证 授权 XSS跨站脚本攻击 ...

  6. VB.Net遍历已安装的程序卸载信息

    Private Shared Function ProgramExists(ByVal pgName As String) As Boolean Dim temp As String = Nothin ...

  7. OLEDB存取BLOB型数据

    现代数据库系统除了支持一些标准的通用数据类型以外,大多数还支持一种称之为BLOB型的数据. BLOB全称为big large object bytes, 大二进制对象类型,这种类型的数据通常用于存储文 ...

  8. drupal基础

    http://www.cnblogs.com/yaoliang11/archive/2009/07/31/1535883.html

  9. Hadoop的安装与配置(虚拟机中的伪分布模式)

    1引言 hadoop如今已经成为大数据处理中不可缺少的关键技术,在如今大数据爆炸的时代,hadoop给我们处理海量数据提供了强有力的技术支撑.因此,了解hadoop的原理与应用方法是必要的技术知识. ...

  10. 重复启动某一款应用,并传递intent参数

    Intent intent = getPackageManager().getLaunchIntentForPackage(packageName); intent.setFlags(Intent.F ...