主题:[讨论]关于学习C++中的疑惑
max_qiang
[专家分:0] 发布于 2009-01-18 16:22:00
各位大侠们:
小弟刚学C++,有几点感到十分的迷惑
(1) 关于2重指针的问题(例如:int **) 到底什么是2重指针,他有什么作用,他与平常的指针有什么区别?
(2) 关于名字域的问题(例如:namespace std) 这个到底有什么用,感觉平时做程序时没他程序也运行的十分正常。
(3) 关于内联函数的问题(例如:inline) 他有什么作用?
希望各位大侠能够为小弟我解惑,各位和我一样的菜鸟们也希望能够参与讨论共同进步.
回复列表 (共1个回复)
沙发
星绽紫辉 [专家分:1700] 发布于 2009-01-19 11:04:00
1.*********************************************************************************
int** ppArray = NULL;
int* pArray[10] = {NULL};
ppArray = pArray;
简单地说: int** 表示指向一个指针(这里是一个指针数组)的指针,其结构如下:
| ---------------------> |(值)
ppArray ---> | ---------------------> |(值)
| ---------------------> |(值)
(指针数组)
ppArray 指向的是一个数组,数组的每一个成员是一个指针,每一个成员指向的是一个堆/栈上的整型数据。其他的类型或者结构也是这样,**指针是学习Com/ActiveX编程的基础,也是学习DX开发的必须要掌握的基础。
一般的int*指针指向的是一个堆、栈上整型数据的指针。
2.************************************************************************************
你自己动手试一下就明白了,很简单:
你建一个test.h文件,然后声明命名空间,然后在命令里面声明一些变量,外面也声明一些变量,然后你在一个测试程序里包含这个头文件,尝试去使用命名空间中和外的变量,然后你就什么都明白了。
3.************************************************************************************
内联函数关键字inline 是在预编译阶段为了优化程序而将函数直接放到目标程序中,这样可以提高应用程序的性能,实际上通常我们都不许要考虑使用它,因为从VS2003以后编译器会自动对某些函数体进行内联优化处理。VC6下,对于简单的函数或者短小的函数(如类里面的构造、析构函数),可以使用inline 关键字前缀。
----------------------------------------------------------------------------------------
myblog: http://www.cppblog.com/rawdata
remember: try and try yourself if you doubt it.
我来回复