C语言地址、指针、多级指针、数组、数组指针

数据类型

image.png
  • 基本数据类型:short(2)、int(4)、long(8)、char(1)、float(4)、double(8)

字符串

char * str = "aaaa";
printf("%s",str);

指针

  • Java:万物皆对象;
  • C、C++:万物皆指针;
  • Linux:万物皆文件;
  • 指针 == 地址;%p是地址站位输出符
  • 任何都是地址,函数、对象都是地址
  • *就是取出地址的值
  • &就是变量对应的地址
  • 指针永远都是存放内存地址
image.png
  • 函数必须先申明再使用
image.png
  • c语言不允许函数重载

交换

image.png

多级指针

  int num = 99;
  int * num_p = #
  int ** num_p_p = & num_p;
  //多级指针取回原值:
printf("%d",*num_p);
printf("%d",**num_p_p);
image.png
  • 指针存放的是内存地址
  • 指针也有地址,自己的内存地址:&p


    image.png

数组与数组指针

int arr[] = {1,9,3,4};

  • arr == &arr == &arr[0] 这三个值相等

  • 数组的内存地址 =第一个元素的内存地址

  • *arr 可以用来取出第一个元素的值


    image.png
  • 通过指针位移来取数组的值


    image.png
  • 遍历数组赋值


    image.png
  • *arr 1

  • *arr+1 2

  • *(arr+1) 9

  • 指针类型有什么用


    image.png
  • 函数指针
    void(*method)(int,int)

//实现回调
#include "stdlib.h";
int add(int num1, int num2) {
    return num1 + num2;
}
int oprate(int(*method)(int, int), int num1, int num2) {
    return method(num1, num2);
}
int main() {
    int result = oprate(add, 1, 2);
    printf("输出结果为%d", result);//3
}
  • 文件上传


    image.png
image.png

你可能感兴趣的:(C语言地址、指针、多级指针、数组、数组指针)