指针

C函数

c语言是面向过程,c语言的源代码基本就是无数个函数的拼接

内存的最小单位为:byte比特 每个比特都有一个唯一不同的编号,每一个地址编号对应的是一个byte的空间大小

一个int占4个byte 所以占用了4个地址编号

32位下4字节无符号整数 64位下为8字节无符号整数

指针:

int *a;

int b=1;

a=&b;

int *a=&b;

输出a为输出的地址

②通过指针引用变量以及指针类型兼容

register代表寄存器存储类型 无法使用指针来指向地址

a代表指针指向的地址 *a代表指向的值而不是地址

&代表取地址

指针类型可能不兼容强转会出问题。

void *p2 可以指向任意类型的地址 void代表无类型。

③指针占内存的说明

指针的长度 无论是 long long *p 还是 int *p 长度都为8(64位)

④空指针和野指针

野指针

int *p;//这个交没有初始话过值的指针,被称为野指针

*p=100;//野指针变得不可控

空指针

指针变量没有明确的指向一块内存,那就指向NULL

NUll在c语言里面是一个宏常量,值为0

*p=null;//

⑤不同数据类型在内存中占地址编号说明:

char 2位 long long 8位 int 4位

⑥指针常量和常量指针

常量指针:

指向常量的指针 const int *p=&b;

不可以通过指针去修改b;

const int b=0;

int *p=&b;

可以通过指针p来修改,c语言漏洞 常用#define来声明常量

指针常量:

int *const p2 = &a;//p2只可以指向a不可以做修改

可以通过p2对a进行读写。

⑦指针和数组的关系

每个数组都有一个指针指向开头 当指针变相指向一个数组时,指针变量名可以当数组名,指向了a[0]的地址

指针可以指向数组中任何一个值 此时指针的下标和数组的下标不一样

⑧指针的运算

可以加减不可乘除

指针变量可以计算,如果int *类型加1变化4个整数 char *加1变化1个整数

long long *加1变化8个

使用加减,可以实现在一个数组中来回变化

⑨不同类型指针的区别与数组的关系

c语言中所有的数据类型都可以里理解为char的一个数组

在执行指针运算时 指针对运算不同


⑩ int类型和ip地址关系

ip地址:0.0.0.0 255.255.255.255

将任何一个输入的int类型转换位ip地址

点ip地址 如987654321 就是一个真实存在的地址 可以ping通

使用char型指针b指向无符号的int a ,b[3],b[2],b[1],b[0]输出出来就是IP地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容