关于指针数组、结构体和内存对齐(20250122)

指针数组

  1. 数组内元素均为指针类数据,称为指针数组。数组内的每一个元素都存放一个地址,相当于一个指针变量。指针数组可用于指向若干个字符串,使字符串处理更加灵活。
  2. 对于main函数的参数,一般上没有参数,但是在某些情况下,main函数也可以有参数
int main(int argc,char argv[])
//argc和argv时调用main函数的形参,是程序的命令行参数。
//argc和argv分别表示参数个数和参数向量。

二级指针

        装有地址的指针

int *p;
int **q = &p;
  1. 第二行代码中,‘int *’说明变量q的基类型,*q说明变量q是一个指针变量。
  2. 被调函数修改主调函数。传参传的是主调函数定义的变量的地址。

结构体

  • 用户可以通过结构体自定义数据类型,将几种不同的数据类型联系起来,编程规范建议将结构体的标识符首字母大写,其次’{}‘末尾要加‘;’。
  • 先声明结构体再定义。关于结构体的运算符分别是指向结构体成员运算符和结构体成员运算符,均为一级,结合方向自左向右。
  • 指针变量传参优于结构体变量传参,不需要重复开辟、销毁内存空间,更省内存,效率也更高。

内存对齐

        RAM与CPU,RAM存储数据,CPU计算数据。通过控制总线、地址总线和数据总线进行信息的交互,数据的传输依靠数据总线,在32位操作系统中,单次传输的大小是4字节,64位操作系统中这个值是8字节。

内存对齐流程

  1. 结构体成员中去查找最长的元素,最终按该元素长度对齐,结构体最终大小能够整除这个数。
  2. 每个结构体成员所处的位置(也就是偏偏移量)。

你可能感兴趣的:(算法)