指针(2)

xiaoxiao2021-02-28  10

指针

指针是变量的一种,里面是一个地址,通过这个地址找到要寻找的数据

int *p = &a   // p指向a, p代表a的地址

指针无论什么类型都是4个字节,一个字节8位,32位操作系统

段错误的原因:访问了不能访问的内存

int *p; //野指针,指向不能访问的地址

int *p = NULL; //空指针

p = &a;   // p 是指针,将a 的地址赋给p

int *p, *pa = &a, *pb;

pb = pa;           // 指针可以互相赋值

实例

int x = 3, y = 0, *px = &x;

y = *px + 5;     //y = 8  x = 3

y = ++*px;      //y = 4  y = 4

y = *px++;      //y = 4  px的地址+4字节

int                 if(n == 0)

指针              if(n == NULL)

bool类型       if(flag) 或者 if(!flag)

float类型       const float EPSIMON = 0.00001;

if  ( ( n >= -EPSIMON )&& ( n <= EPSIMON))

(重点)malloc

#include <stdlib.h>

src = (char *)malloc(sizeof (char) * 20);

if(NULL == src)

{

 perror("malloc")

}

free(src);             // 从堆空间释放

src == NULL;

char * ; 不需要手动释放空间,位于栈空间

strlen(地址)          //求长度 

length = (sizeof(string) / sizeof(char *));  // 求char *string[]中的元素个数

宏函数

1.增加预处理时间

2.无入参判断(不安全)

自定义函数

劣:占用过多空间

优:有入参判断

typedef unsigned char uchar; // 定义unsigned char用 uchar 代替

typedef int(* FUNC)(int, int);

FUNC p;

<=>

int *p(int, int);

int *(*(*fp)(int))[10];

(    * fp    ) fp是一个指针

(   *fp(int)   )指向一个有一个参数为int型的函数

(   *(*fp(int))   )函数的返回值是一个指针

(   int * (*(*fp(int)) [10]    )指针指向一个有10个元素的数组,每个元素的类型为int *型

int *(*(* array[5]())();

(   *array[5]   )array是一个有5个元素的数组,每个元素的类型是指针

(    *( *array[5]() )    )指针指向一个没有参数的函数,函数的返回值为指针

(     int * (*(  *array[5] )() ) ()  )指针指向一个没有参数的函数,函数的返回值为int *类型

转载请注明原文地址: https://www.6miu.com/read-1650100.html

最新回复(0)