《C语言内核深度解析》小结

数组

数组的元素类型决定数组如何定义
如:
元素char     数组定义char   a[6];
元素char *   数组定义char *a[6];
元素char *   数组定义char *a[6];

数组元素决定数组指针的类型
如:
元素char     数组定义char   a[6]    数组指针char  (*p)[6]   p = a;
元素char *   数组定义char *a[6]    数组指针char *(*p)[6]   p = a;

所以:不要去在意关于元素类型的指针,只要写好数组就可以了,最后加上元素类型就好了。

数组名 = &数组名

#include <stdio.h>
int main()
{
	int buf[3] = {1, 2, 3};
	printf("0x%x\n", &buf);  //输出0x19ff34
	printf("0x%x\n", buf);   //输出0x19ff34
	return 0;
}

对二维数组的判断,先从高层到低 层,一层一层判断。
如:                                         要记住一条规则,数组名 = 数组首元素的地址
a[2][5];
a        =    &a[0];      //第一层有两个元素
a[0]    =    &a[0][0];  //第二层有五个元素

要判断一个指针是一级指针还是二级指针,只要让指针加一,然后得出它的地址,就知道了。

如:

int (*p)[100]   p + 1 = p的值加上  4 X 100

int a[100] = {0};  a + 1 = a的值加上4

函数指针

函数指针:首先修饰词是函数,主语是指针,
                  类型如:int (* fun)(int);
指针函数:就是返回值为指针的函数,      
                  类型如:int  * fun (int);
函数指针数组:就是元素是函数指针的数组
                  类型如:int (* fun[6])(int);
返回值为指针 的 函数指针数组:就是元素是函数指针的数组
                  类型如:int *(* fun[6])(int);

注意:数组元素类型不能为函数
如                            int fun[6](int);

malloc

malloc(0):不同的编译器可能不同,有可能为NULL;

malloc(4):GCC分配的最低字节是16B,所以回分配16B.

字符串常量放到代码段。

字节对齐

更改C编译器的缺省字节对齐方式

在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。一般地&#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值