随笔分类 - C语言 / 指针
摘要:函数指针的定义 函数名,代表函数的入口地址 函数指针,本质是一个指针变量,只是该变量保存的是函数的入口地址 例如:int (*p)(int, int) = NULL; 函数指针 p 只能保存有两个 int 形参以及 int 返回值的函数入口地址 注意: 函数指针变量不要 +1,无意义 不要对函数指针
阅读全文
摘要:指针变量作为函数的参数 如果想再函数内部修改外部变量的值,需要将外部变量的地址传递给函数 函数内部想要操作(读或写)外部数组元素,将数组名传递给函数 函数内部想要操作函数外部的二维数组,需要将二维数组名传递给函数 二维数组作为函数的形参,会被优化成一维数组指针。例如:int arr[3][3] 优化
阅读全文
摘要:数组指针:本质是指针变量,保存的是数组的首地址 例如:int (*p)[5] = NULL; 数组首元素地址。例如:int arr[3] = {10, 20, 30}; arr就是首元素地址(&arr[0] == arr),arr + 1 跳过一个元素 数组的首地址。例如:int arr[3] =
阅读全文
摘要:指针数组:本质是数组,只是数组的每个元素为指针 1、数值的指针数组 2、字符指针数组 char *arr1[4] = {"hehe", "xixi", "lala"}; 和 char arr2[4][128] = {"hehe", "xixi", "lala"}; 的区别: arr1 是指针数组,存
阅读全文
摘要:字符数组 char str1[128] = "hello world"; str1是数组,开辟128字节空间,存放字符串"hello world"。 sizeof(str1) == 128字节 字符串指针变量 char *str2 = "hello world"; str2是指针变量,在栈区/全局区
阅读全文
摘要:数组元素的指针变量和数组名(作为地址)等价 在使用中,[] 就是 *() 的缩写 为啥 arr == &arr[0] &arr[0] == &*(arr + 0) == arr + 0 == arr 指向同一数组元素的两个指针变量之间的关系
阅读全文
摘要:指针变量的指向类型决定了取值宽度 指针变量的指向类型决定了+1的跨度 案例: 1、取出0x0102的值 2、取出0x0203的值 3、取出0x02的值
阅读全文
摘要:指针和指针变量 指针就是内存的地址编号 指针变量,本质是变量,只是该变量保存的是内存的地址编号(不是普通的数值) 指针变量的定义 用 * 来修饰指针变量。例如: 1、定义一个指针变量p 保存 int num的地址 int *p; 2、定义一个指针变量p 保存数组int arr[5]首地址 int (
阅读全文