定义struct
在c里需要typedef。在c++里不需要
struct定义在哪里
1、在C++中,结构体也是类
2、放在类定义前面,因为结构体默认都是public的,所以可以随便用。
一般把结构体放在类前定义
当然如果类中要用这个结构体才是必须的
函数返回指针类型
内存分配分为三种:
1 从静态存储区域分配。内存在程序编译时候已经分配好,这块内存在程序整个运行期间都存在。对应的就是:全局变量,static变量
2 从栈上创建。函数内局部变量申请的存储单元在栈上创建,函数结束时栈空间自动释放。比如:int a; int *p = &a; return p; 这样返回的地址就不知道指向的是什么东西了。
3 从堆上分配,亦称动态分配。运行时用 malloc(c语言中使用)或者new(c++语言中使用)申请内存,程序员自己负责 用free或者delete释放,因此生存期是由我们来定的。即使在函数体内声明的也不会随函数结束而消失。
指针数组与数组指针
int* q[3];//指针数组 q是数组,数组元素是指针,3个int指针
int (*p)[4];//数组指针 p是指针,指向一维数组,每个一维数组有4个int元素
其实这两种写法主要是因为运算符的优先级, 因为[]的优先级比*高。所以第一种写法,p先和[]结合,所以是一个数组,后与*结合,是指针。后一种写法同理。
{}里是局部定义
//错误test.cpp:5: error: redeclaration of ‘int i’
1 #include <stdio.h>
2 int main(int argc, char* argv[])
3 {
4 int i;
5 int i;
6 return 0;
7 }
//正确
2 int main(int argc, char* argv[])
3 {
4 int i;
5 { int i;}
6 return 0;
7 }
fabs、abs
C++中求绝对值函数abs()和fabs()一样吗? ... abs()求得是正数的绝对值。 fabs()求得是浮点数的绝对值。C++中求绝对值函数abs()和fabs()一样吗? ... abs()求得是正数的绝对值。 fabs()求得是浮点数的绝对值。