NDK启航篇——C语言基础(指针)

2020-03-27  本文已影响0人  爺珍爱那颗心
ndk
NDK启航篇——C语言基础

昨天已经介绍了下什么是指针,今天继续讲指针

为什么指针要有类型

//尖括号代表系统类库,std表示标准,io表示输入输出 引入标准输入输出
#include<stdio.h>
//lib表示类库 引入标准类库
#include<stdlib.h>
main(){
  int a = 10;
//取出a的地址,赋值给指针p
  int *p = &a;
//#x表示十六进制,取出a的地址
  println("%#x",p);
//取出a地址里存的值
  println("%d",*p);
  double j = 34.1;
  p  = &j;
//#x表示十六进制,取出j的地址
  println("%#x",p);
//取出j地址里存的值
  println("%lf",*p);
  system("pause");
}

如上代码运行你会发现取出来的值为0.00000,原因就是指针的类型不匹配(通过4字节读取8字节的内容)

空指针(NULL)

 void main(){
    int i = 10;
//定义一个空指针j
    int *j = NULL;
//#x表示十六进制,取出j的地址
    printf("%#x\n",j);
//取出j地址里存的值
    printf("%d\n",*j);
    system("pause");
}

多级指针(二级)

void main(){
//定义一变量i
  int i = 10;
//把i的地址赋值给j
  int *j = &i;
//把j的地址赋值给k
  int **k = &j;
//k存的j的地址,j上存的i的地址
  printf("j:%#x,k:%#x\n",j,k);
//加一个*是i的地址,加两个*是i的值
  ** k = 20;
  printf("%d\n",i);
  getchar();
}

加一个*是i的地址,加两个*是i的值(最多三级指针)

指针运算(对数组的操作)

void main(){
  int i [] = {11,12,13,14,15};
//数组变量名:i就是数组的首地址
  printf("%#x\n",i);
  printf("%#x\n",&i[0]);
//数组的变量名就是地址
  int *j = i;
  printf("%d\n",*j);
//指针加法
  j++;//j++向前移动sizeof(数据类型)个字节
  printf("%d\n",*j);
  getchar();
}
void main(){
//定义有五个元素的数组i
  int i [5] ;
//把数组i的地址赋值给指针j
  int *j = i;
//数组的值
  int k = 0;
//通过指针给数组赋值
  for(;j<i + 5;j++){
    *j = k;
    k++;
  }
}

今天就先到这里啦,明天继续写函数指针,欲速则不达,慢慢来不着急。

上一篇下一篇

猜你喜欢

热点阅读