首页 > 代码库 > C/C++ 学习笔记
C/C++ 学习笔记
1、假设某个C函数的声明如下:
void foo(int x);
函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号 extern "C" 来解决这个问题。例如:
extern "C" { void foo(int x); ... }
或者写成
extern "C" { #include "myHeader.h" ..//其他C头文件 }
这就告诉C++编译器,函数foo是个C连接,应该到库中找名字_foo 而不是找 _foo_int 。C++编译器开发商已经对C标准库的头文件作了extern "C"处理,所以可以用#include 直接引用这些头文件。
2、指针
(1)指针变量初始化的方法:
int a; int *p = &a;
(2)赋值语句的方法:
int a; int *p; p = &a;
不允许把一个数赋予指针变量,故下面的赋值是错误的:
int *p; p = 100;
被赋值的指针变量前不能再加”*“说明符,如写成 *p = &a 也是错误的。
(3)打印:
int a, *p = &a; printf("%d", *p);
(4)运算:
int a=10, b=20, s, t, *pa, *pb; pa = &a; pb = &b; s = *pa + *pb; t = *pa * *pb;
(5)通过结构指针变量访问结构变量成员:
p->num; //(*p).num
3、联合类型
在”联合“中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是,这里所谓的共享不是指把多个成员同时装入一个联合变量内,而是指该联合变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值。
C/C++ 学习笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。