定义struct/struct定义在哪里/函数返回指针类型/指针数组与数组指针/{}里是局部定义/fabs、abs

来源:互联网 发布:bl是什么意思网络用语 编辑:程序博客网 时间:2024/05/18 21:40

定义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 }

//正确

 1 #include <stdio.h>
 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()求得是浮点数的绝对值。



原创粉丝点击