Android NDK基础2:C_指针类型_空指针_多级指针_指针运算
指针类型
#include <stdio.h>
#include <stdlib.h>
//1.指针为什么要有类型?
//指针有类型,地址没有类型
//地址只是开始的位置,类型读取到什么位置结束
void main() {
int i = 100;
//int 类型的指针
int *p = &i;
double j = 78.9;
//赋值为double类型变量的地址
p = &j;
printf("double size:%d\n", sizeof(double));
printf("%#x, %lf\n", p, *p); //想通过4字节读取8字节变量的值,是不行的
getchar();
}
空指针
//2.NULL空指针
void main() {
int i = 9;
int *p = NULL;
//p = &i;
//空指针的默认值为0
printf("%#x\n", p);
//访问内存地址0x000000操作系统不允许
//p = 100; //操作系统不允许访问
printf("%d\n", *p);
getchar();
}
多级指针
//3.多级指针(二级指针)
//指针保存的是变量的地址,保存的这个变量还可以是一个指针变量
//动态内存分配给二维数组
void main() {
int a = 50;
//p1上保存的a的地址
int* p1 = &a;
//p2上保存的p1的地址
int** p2 = &p1;
//int*** p3 = &p2;
printf("p1:%#x, p2:%#x\n", p1, p2);
**p2 = 100;
printf("%d\n",a);
getchar();
}
指针运算
//4.指针的运算
//指针的运算,一般在数组遍历时才有意义,基于数组在内存中线性排列的方式
void main() {
//数组在内存中连续存储
int ids[] = { 78, 90, 23, 65, 19 };
//数组变量名:ids就是数组的首地址
//ids、&ids、&ids[0]都是数组的首地址
printf("%#x\n", ids);
printf("%#x\n", &ids);
printf("%#x\n", &ids[0]);
//指针变量
int *p = ids;
printf("%d\n", *p);
//指针的加法
p++; //p++向前移动sizeof(数据类型)个字节
printf("p的值:%#x\n", p); //p的值加了4
//p--;
printf("%d\n", *p);
getchar();
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/android-ndk-basic-c-pointer-type-null-pointer-multi-level-pointer-pointer-operation/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
Android NDK基础2:C_指针类型_空指针_多级指针_指针运算
指针类型
#include <stdio.h>
#include <stdlib.h>
//1.指针为什么要有类型?
//指针有类型,地址没有类型
//地址只是开始的位置,类型读取到什……
文章目录
关闭
共有 0 条评论