指针笔记

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

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                      if(n == 0)或者 if (n != 0)
float              const float EPSINON = 0.00001;
                    if ((n >= -EPSINON ) && (n <= EPSINON ))
bool类型             if (flag)或者if (!flag)
指针类型              if (n == NULL)或者if (n != NULL)


(重点)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 *类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值