当前位置:网站首页>C专家编程 序
C专家编程 序
2022-08-01 21:00:00 【weixin_客子光阴】
1.展示优秀的C程序员所使用的编码技巧;
2.对C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。
3.帮助有一定经验的C程序员成为C编程方面的专家;帮助C语言功底深厚的程序员站在C的高度了解和学习C++。
编程理念:任何人都可以享受编程。
编程应该是一项精妙绝伦、充满生机、富有挑战的活动,而讲述编程的图书也应能令读者时时迸射出激情的火花。
应用于PC和UNIX系统上的ANSI标准C语言,对C语言中与UNIX平台复杂的硬件结构(如虚拟内存等)相关的特性做了详细描述,也对PC的内存模型和Intel8086系列对C语言产生的影响做了全面介绍。
许多令C程序员困惑的主题:
*typedef struct bar{ int bar; }bar的真正意思是什么?
解析:
第一个bar是结构标签,第二个bar是结构中的成员变量名,第三个bar是结构类型。
#include <stdio.h>
typedef struct bar {
int bar;
int z;
}bar;
/*第一个bar是一个结构标签名
*第二个bar是结构中的一个类型为int的bar变量名
*第三个bar是一个结构类型名
*struct bar 结构类型
*struct bar bar 第一个bar是一个结构标签,第二个bar是一个对象名
*bar.bar 第一个bar是一个对象名,第二个bar对象名的成员变量
*/
int main() {
//error
/*typedef struct bar bac; //not allowed!
bac.bar = 5;*/
bar bar;
bar.bar = 3;
struct bar baz;
baz.bar = 4;
printf("sizeof(bar) = %d,sizeof(struct bar) = %d\nsizeof(bar.bar) = %d,sizeof(baz.bar) = %d\n",
sizeof(bar), sizeof(struct bar), sizeof(bar.bar), sizeof(baz.bar));
printf("bar.bar = %d, baz.bar = %d\n", bar.bar, baz.bar);
return 0;
}
/* 输出:
*/
*我怎样把一些大小不同的多维数组传递到同一个函数中?
解析:
通过压扁数组为一维数组可以把大小不同的多维数组传递到同一个函数中。
*为什么extern char *p;同另一个文件的char p[100];不能够匹配?
解析:
为什么人们会认为指针和数组始终应该是可以互换的呢?答案是对数组的引用总是可以写成对指针的引用,而且确实存在一种指针和数组的定义完全相同的上下文环境。不幸的是,这只是数组的一种极为普通的用法,并非所有情况下都是如此。当用p[i]这种形式提取这个声明的内容时,实际上得到的是一个字符。但按照指针的方法,编译器却把它当做是一个指针,把ASCII字符解释为地址显然是牛头不对马嘴。
*什么是总线错误(bus error)?什么是段违规(segmentation violation)?
解析:
总线错误(bus error)是因为未对齐的内存访问请求时,被堵塞的组件就是地址总线。对齐(alignment)的意思就是数据项只能存储在地址是数据项大小的整数倍的内存位置上。事实上,总线错误几乎都是由未对齐的读或写引起的。段违规(segmentation violation)一般是由内存管理单元(负责支持虚拟内存的硬件)的异常所致,而该异常则通常是由解除一个未初始化或非法值的指针引起的。
*char *foo[]和char (*foo)[]有何不同?
解析:
//foo is a array, elements in array is a pointer points to the char
char *foo[];
//foo is a pointer, pointer points to a array of char
char (*foo)[];
边栏推荐
- Excel advanced drawing techniques, 100 (22) - how to respectively the irregular data
- 写给刚进互联网圈子的人,不管你是开发,测试,产品,运维都适用
- 系统收集集
- To promote energy conservation institute 】 【 the opinions of the agricultural water price reform
- 98.嵌入式控制器EC实战 EC开发板开发完成
- Simple test of the use of iptables
- 那些关于DOM的常见Hook封装(二)
- 响应式织梦模板美容整形类网站
- Zheng Xiangling, Chairman of Tide Pharmaceuticals, won the "2022 Outstanding Influential Entrepreneur Award" Tide Pharmaceuticals won the "Corporate Social Responsibility Model Award"
- 这些 hook 更优雅的管理你的状态
猜你喜欢
随机推荐
Pytorch学习记录(八):生成对抗网络GAN
Kubernetes 如何实现组件高可用
Wildcard SSL/TLS certificate
Hiking, cured my mental internal friction
织梦发布文章提示body has not allow words错误
Pytorch框架学习记录8——最大池化的使用
Excel advanced drawing techniques, 100 (22) - how to respectively the irregular data
R语言 pca主成分分析的主要方法
[Personal Work] Remember - Serial Logging Tool
360借条安全专家:陌生微信好友不要轻易加贷款推广多是诈骗
myid file is missing
Go Atomic
通过这两个 hook 回顾 Set/Map 基础知识
AQS原理和介绍
tiup mirror grant
和我一起写一个音乐播放器,听一首最伟大的作品
【Dart】dart之mixin探究
Failed to re-init queues : Illegal queue capacity setting (abs-capacity=0.6) > (abs-maximum-capacity
字符串
tiup mirror merge