现在位置: 首页 > 指针
2018-11-01 14:16 工业·编程 ⁄ 共 2477字 暂无评论
一、概念 在如下的A指向B、B指向C的指向关系中: 首先 C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。 B是一个指针变量,其中存放着C的地址,但是B也要占空间的啊,所以B也有地址,B的起始地址是0x00000004,但是B内存中存放的是C的地址,所以B里面的内容就是0x00000008。 那么到此为止都比较好理解: B= 0x00000008;  //B的内容 *B ...
阅读全文
2018-10-31 13:52 工业·编程 ⁄ 共 997字 暂无评论
对于一个函数,如果未加引用,则是按值传递,实际上只是复制了一个传入参数相同类型相同值的变量进行操作,当函数结束时,传入变量并未改变,如: 代码1: void Func(int num) {     num += 1; } int main() {     int a = 1;     Func(a);     cout<<a<<endl;     return 0; } 这段代码执行时,将a的值复制给num,num加上1之后为2,...
阅读全文
2018-10-30 13:48 工业·编程 ⁄ 共 483字 暂无评论
在重新回顾C语言数据结构时,在实现顺序表和链表时关于指针使用的区别让我觉得很有趣。 像在顺序表中实现 struct SeqList {     DataType arry[MAX_SIZE];     int Size; }; 而我们在使用顺序表时,往往在main函数中直接定义: SeqList seqlist; 在后面对顺序表的使用中,直接传参,比如 InitList(&seqlist); 而在链表中 typedef struct SQList {     DataType data;  &...
阅读全文
shared_ptr是一个很好用的东西, 但是有些地方不注意也会带来很不必要的麻烦。 class test_ptr { }; typedef shared_ptr<test_ptr> TestPtr; int main() {     test_ptr* pTest = new test_ptr;     TestPtr sharePTest(pTest);     delete pTest;     return 0; } 看看上面这段代码有没有问题? 这段代码什么也没做,可是在运行的时候程序去会崩溃。问题出...
阅读全文
2014-05-14 06:40 工业·编程 ⁄ 共 5174字 暂无评论
文章目录 智能指针 QPointer 很简单的入门程序,应该比较熟悉吧 ^_^ #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) {     QApplication app(argc, argv);     QLabel *label = new QLabel("Hello Dbzhang800!");     label->show(); ...
阅读全文
2013-08-29 22:34 工业·编程 ⁄ 共 631字 暂无评论
先来看一个例子: 文件1:int array_a[3]={1, 2, 3} 文件2:extern int *array_a;  printf(“%d”, array_a[2]); 请问输出是多少? 答案是运行时会出错,原因是访问了不可访问的内存。将extern int *array_a改为extern int array_a[]后正常输出。 为什么会出现这样的情况呢? 出现这个问题的原因是编译器对数组和指针的解释是不同的。 使用extern int *array_a; 作声名,编译器会把array_a理解为一个指向int 的指针,对指针...
阅读全文
下面这个程序不见得在每种编译器上都能通过编译,既使通过了编译,也不见得可以成功运行并输出结果。 让人欣慰,更让人郁闷的是:它在我的Visual Studio 2005 SP1中,既能顺利编译,也能正常运行。 它虽然投机取巧,胡作非为,蝇营狗苟,横行霸道。但它至少能引发你的思考,加深一点你对this指针的理解,如果你还不是十分理解的话。 #include <iostream>  using namespace std;    #pragma warning(disabl...
阅读全文
2013-04-14 06:40 工业·编程 ⁄ 共 4024字 暂无评论
    如果在程序中定义一个变量,在编译时就给这个变量分配内存单位。系统根据程序中定义的变量类型,分配一定长度的空间。例如,C++编译系统一般为整形变量分配4个字节,为单精度浮点型变量分配4个字节,为字符型变量分配1个字节。内存区的每一个字节有一个编号,这就是“地址”,它相当于旅馆中的房间号。在地址所标识的内存但愿中存放数据,这相当于旅馆中各个房间中居住旅客一样。 区别:内存单元的地址与内存...
阅读全文
2012-12-04 23:06 工业·编程 ⁄ 共 1674字 暂无评论
  今天在MFC工程中使用了WM_USER定义用户消息,从文档中得知ON_MESSAGE的消息处理函数应该符合如下格式:afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)。其中的作用域"CWnd::"引起了我的好奇。我们知道,消息处理函数只能在CWnd的派生类中定义或者重载,其作用域必然是CWnd派生类。为此我做了个实验: class Parent { }; class  Child: public Parent { public:     int Func(in...
阅读全文
2012-11-12 21:48 工业·编程 ⁄ 共 1621字 暂无评论
(一)m_hWnd ① m_hWnd这个成员变量,最早是定义在类CWnd中,而且是类CWnd的第一个数据成员,先看一下MSDN的解析: The handle of the Windows window attached to this CWnd. The m_hWnd data member is a public variable of type HWND. 由此可知,它是窗口类的一个句柄,凡是从CWnd派生的类都有这个句柄,凡是以CWnd派生的类定义的对象内部也都有这个句柄,它是类或者对象标识自己的句柄。 凡是窗口都有一个句柄用来标...
阅读全文