由买买提看人间百态

topics

全部话题 - 话题: 函数指针
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
q*******i
发帖数: 353
1
【 以下文字转载自 CS 讨论区 】
发信人: qqwuweiyi (娓娓), 信区: CS
标 题: 在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的设计?
发信站: BBS 未名空间站 (Mon Mar 21 23:19:53 2011, 美东)
比如子函数(void)内用主函数通过参数传过来得指针malloc了空间,然后做
了一些操作之后,返回主函数,在主函数里面再free这个空间。这样做理论上应
该没问题,但是是不是风险很大?是很糟糕的设计?比较好的方法是什么呢?
(用指针的指针传递?)
q*******i
发帖数: 353
2
【 以下文字转载自 CS 讨论区 】
发信人: qqwuweiyi (娓娓), 信区: CS
标 题: 在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的设计?
发信站: BBS 未名空间站 (Mon Mar 21 23:19:53 2011, 美东)
比如子函数(void)内用主函数通过参数传过来得指针malloc了空间,然后做
了一些操作之后,返回主函数,在主函数里面再free这个空间。这样做理论上应
该没问题,但是是不是风险很大?是很糟糕的设计?比较好的方法是什么呢?
(用指针的指针传递?)
l********a
发帖数: 1154
3
来自主题: Programming版 - 问一个函数指针的问题,c++
函数指针一直没有搞太懂,先描述下需求:
我想用遗传算法解一个问题,现在大体部分完成了,算法也能跑,计算得出结果也正确.整
个算法是编译为dll供其他程序调用
目前设置的算法有个objectiveFun(string funName)函数,根据输入字符串来决定调用
哪个目标函数,(因为边写边测试,用的最简单的函数f(x)=x_1+x_2,测试,但是真正计算
的时候,目标函数很复杂的),
double objectiveFun(string funName)
{
if (0==funName.compare("test"))
{ return testFun(x); }
else if (0==funName.compare("run"))
{ return run(x); }
}
现在我想把这个GA算法做成一个通用的,所以准备将objectiveFun改写,如果可以接受一
个函数指针,这样编程的时候就不用写死了,运行时没法修改.想弄成动态改变的,不知道
可不可行?因为我没有深入看过函数指针,不知道这个路走不走的通?多谢.
g**********t
发帖数: 475
4
【 以下文字转载自 Programming 讨论区 】
发信人: geneticdrift (不懂微积分), 信区: Programming
标 题: 求助,如何才能将一个c++对象封装成一个函数指针。
发信站: BBS 未名空间站 (Wed Oct 31 22:30:16 2012, 美东)
我有一个似然函数,是用面向对象的方式写的。现在我想用一个别人用c语言写的子程
序来对我的函数进行优化。由于这个子程序是用c写的,只能接受一个函数指针作为参
数。由于这个子程序比较复杂,不想对其做太多改动。请问如何能把我的类对象封装成
函数指针? 用functor吗?
b***i
发帖数: 3043
5
来自主题: Programming版 - 问一个函数指针的问题,c++
先不讲template, 你可以定义你的函数指针,和map<函数名字,函数指针>
typedef double (*pFun)(double*);
map > funmap;
在你的统一调度的函数中
pFun p = funmap["name"];
double rc=(*p)(x);
g**********t
发帖数: 475
6
我有一个似然函数,是用面向对象的方式写的。现在我想用一个别人用c语言写的子程
序来对我的函数进行优化。由于这个子程序是用c写的,只能接受一个函数指针作为参
数。由于这个子程序比较复杂,不想对其做太多改动。请问如何能把我的类对象封装成
函数指针? 用functor吗?
g**********t
发帖数: 475
7
我有一个似然函数,是用面向对象的方式写的。现在我想用一个别人用c语言写的子程
序来对我的函数进行优化。由于这个子程序是用c写的,只能接受一个函数指针作为参
数。由于这个子程序比较复杂,不想对其做太多改动。请问如何能把我的类对象封装成
函数指针? 用functor吗?
i****d
发帖数: 255
8
来自主题: Programming版 - 关于传递函数指针
不太明白楼上的反问。
要我说,至少在C里面,仅传递函数名本身就可以了,因为不会有函数同名或者重载的
问题。函数名本身就可以唯一的代表一个函数,不再需要在传递函数指针时还带上所有
的参数类型。
对吗?
l********a
发帖数: 1154
9
来自主题: Programming版 - 问一个函数指针的问题,c++
非常感谢,用map将string和函数指针对应起来的确是我最想实现的东西.之前对函数指
针不大理解.看看好点儿了.现在去写代码测试,如果map["key"]返回NULL就是该字符串
对应的函数没有定义吧
b******b
发帖数: 300
10
来自主题: JobHunting版 - 问一个c++ 函数指针的问题
class Calculator{
public:
int add(int a, int b){
return a+b;
}
int subtraction(int a , int b){
return a-b;
}

};
typedef int(Calculator::*CalPointer)(int,int);
int _tmain(int argc, _TCHAR* argv[])
{
CalPointer fun;
fun = Calculator::add;
fun(2,4);
}
总是报错,求问 应该怎么写函数指针啊
j*****y
发帖数: 1071
11
来自主题: JobHunting版 - 问一个c++ 函数指针的问题
加一个地址符号
fun = &Calculator::add;

class Calculator{
public:
int add(int a, int b){
return a+b;
}
int subtraction(int a , int b){
return a-b;
}

};
typedef int(Calculator::*CalPointer)(int,int);
int _tmain(int argc, _TCHAR* argv[])
{
CalPointer fun;
fun = Calculator::add;
}
总是报错,求问 应该怎么写函数指针啊.................
m********r
发帖数: 334
12
最近看源码很多调用最后都是用函数指针回调,有什么编辑器可以列出可能被调用的函
数?不需要运行时调试,当然如果有类似反射的功能就更好了。
q*******i
发帖数: 353
13
比如子函数(void)内用主函数通过参数传过来得指针malloc了空间,然后做
了一些操作之后,返回主函数,在主函数里面再free这个空间。这样做理论上应
该没问题,但是是不是风险很大?是很糟糕的设计?比较好的方法是什么呢?
(用指针的指针传递?)
i****d
发帖数: 255
14
来自主题: Programming版 - 关于传递函数指针
按照我的理解,如果要把一个函数(A)指针当成参数传给另外一个函数(B),在函数B的参
数表里需要把函数A的类型和它所有参数的类型全部带上,这样函数B的参数表就会非常
冗长。比如:
double B(double a, double b, double (*A)(double, int, char*, double*))
不知道我的理解是否正确,各位有没有好的解决方法。
多谢!
H***a
发帖数: 735
15
According to LZ "子函数(void)内用主函数通过参数传过来得指针malloc了空间,
然后做了一些操作之后,返回主函数,
在主函数里面再free这个空间", there I just created a critical example.
Caller - main function - might not need to use the array at all since all
the operations can be done in
subroutine. In this case, it's unfair to let main function free the resource.
That's just my 2 cents.
p***o
发帖数: 1252
16
来自主题: Programming版 - 一个C的void指针的问题
嗯,差不多,就是BS在C++ D&E里谈到的原始的template。另外也可以把
函数指针用进去,就像qsort这个C库函数那样。不过用C写费力不讨好,
用C++方便很多。
x****u
发帖数: 44466
17
这事和私有不私有没半点关系,关键问题是C++没对语法特性跨模块给出个规范来。所
以只要不能随意rebuild world的平台,类似技术就必不可少。
COM的基础就是把一切特性都包含到函数指针表里面,然后进一步重新通过这个指针表
实现对象的各种特性。即使在Linux下的很多子系统内,类似的实现也很多。

.h
x****u
发帖数: 44466
18
这事和私有不私有没半点关系,关键问题是C++没对语法特性跨模块给出个规范来。所
以只要不能随意rebuild world的平台,类似技术就必不可少。
COM的基础就是把一切特性都包含到函数指针表里面,然后进一步重新通过这个指针表
实现对象的各种特性。即使在Linux下的很多子系统内,类似的实现也很多。

.h
S*A
发帖数: 7142
19
这个在 C 定义是完全没有问题的。
*p * *q,中间那个是乘号。一头一位是dereference。
这个取决于 * 作用的type。
看习惯了就没有问题了。一般人会留空格提示优先关系。
实在不爽可以 (*p) * (*q)
C++ 操作符号的函数调用依赖操作对象的类型不要太多。
操作符overwrite。
*p 不是永远可以用 p[0] 替代,我举个例子:
int (*p)(void);
然后statment 调用函数指针可以写:
(*p)();
但是不可以写
(p【0】)();
也不可以写 p[0]()
s****n
发帖数: 41
20
想了很久这个class function pointer为什么不对,如果单纯引用类外函数这样引用可
以,可为什么同样的方法不能用于指向类中函数呢?
编译失败,显示
error C2059: syntax error : '::*'
我的代码如下:
#include
using namespace std;
class H
{
double a,b,c;
public:
H(double x,double y,double z);
double sum(double a, double b);
double operation(double a,double b,double(H::*pt)(double a, double b));
};
H::H(double x,double y,double z)
{
a=x;b=y;c=z;
}

double H::sum(double a, double b)
{ return a+b;
}
double H::operation(double a,double
w***n
发帖数: 1084
21
那你不能分配好空间再传给子函数让它操作吗?为啥一定要让子函数分配空间。
l********a
发帖数: 1154
22
来自主题: Programming版 - 问一个函数指针的问题,c++
我接受一个double arr[],经过运算,输出一个double,是objective function的值.
多谢几位.
fakeshawn朋友回复的这个模板我没大看明白
这样输入,c++会认为func是个函数吗?如果这个函数不存在呢?
调用的办法是: double obj = objectFunc(testObjFunc);
这样对吗?如果已经有一个函数定义为 double testObjFunc(...);
可是x[]参数怎么传递进去?
h**6
发帖数: 4160
23
来自主题: JobHunting版 - 问一个c++ 函数指针的问题
这不是静态函数,不同通过双冒号访问。
要么在Calculator类内部调用,
要么把add改成静态函数,
要么定义一个Calculator Object。
m****e
发帖数: 37
24
来自主题: Programming版 - 一个函数指针的问题
用Allocate_2DArray函数分配空间,在函数内部,pArray2D一直没问题,可是返回的
pCostMatrix确是NULL,有什么方法可以解决问题?多谢。
double** pCostMatrix = NULL;
bSuccess = Allocate_2DArray(100, 100, pCostMatrix);
template
Logical Allocate_2DArray(Int32 lWidth, Int32 lHeight, T** pArray2D)
{
bool bSuccess = true;
pArray2D = NULL;
try {
pArray2D = new T*[lWidth];
}
catch(...) {
IMSMessageAlert("Insufficient memory ");
}
bSuccess = (pArray2D != NULL);
if(bSuccess) {
for(Int32 lWidthIndex = 0; lWidthIndex <
P********e
发帖数: 2610
25
来自主题: Programming版 - 一个函数指针的问题
程序写怎么好,还问这种问题?
template
Logical Allocate_2DArray(Int32 lWidth, Int32 lHeight, T**& pArray2D)

用Allocate_2DArray函数分配空间,在函数内部,pArray2D一直没问题,可是返回的
pCostMatrix确是NULL,有什么方法可以解决问题?多谢。
double** pCostMatrix = NULL;
bSuccess = Allocate_2DArray(100, 100, pCostMatrix);
template
Logical Allocate_2DArray(Int32 lWidth, Int32 lHeight, T** pArray2D)
{
bool bSuccess = true;
pArray2D = NULL;
try {
pArray2D = new T*[lWidth];
}
catch(...) {
IMSMessageAlert("Insufficient m
s*****k
发帖数: 604
26
来自主题: Programming版 - 纯虚函数问题
不好意思可能我的问题提的不好。
我明白抽象类不能创建对象,因为有成员函数的实现没有给出(virtual function)。
其实我的本意是想问抽象类是不是和java里的interface是一个东西?
我的理解是 virtual function 就是定义接口但是不给出实现。
C 里面用函数指针实现callback, 在C++里面可以中抽象类来实现。
b*******s
发帖数: 5216
27
C里面调用c++代码的一般方法是,你自己写一个接口函数,放在extern "C" {} 里面,
这样两种代码都可以使用,因为没有mangling
在这个接口函数里,你想干什么干什么
b*******s
发帖数: 5216
28
C里面调用c++代码的一般方法是,你自己写一个接口函数,放在extern "C" {} 里面,
这样两种代码都可以使用,因为没有mangling
在这个接口函数里,你想干什么干什么
J*****n
发帖数: 4859
29

这个我知道啊,不过问题是,我这里要调用有default para的函数,用functor怎么实
现呢?
谢谢。
p***o
发帖数: 1252
30
来自主题: Programming版 - 一个C的void指针的问题
有时候人不让你用C++,只好用宏+函数指针了 ...
w********r
发帖数: 14958
31
检查一下函数指针地址
后来查了一下,这是不可能的。
f*******y
发帖数: 988
32
来自主题: Programming版 - 关于传递函数指针
你这个是run time
compile-time需要让compiler知道他们是不同的函数类型
当然你可以说compiler不管了,run-time再报错好了,这是设计理念的问题
z****e
发帖数: 2024
33
为什么p归零以后,还能调用成员函数呢?
g*********s
发帖数: 1782
34
来自主题: Programming版 - 问个函数指针指向操作符的问题
下面这段没问题:
bool op_less(int x, int y) {
return (x < y);
}
bool op_greater(int x, int y) {
return (x > y);
}
bool (*compare_op)(int, int) = is_min ? &op_less : &op_greater;
但是下面这段总是编译失败:
bool (*compare_op)(int, int) = is_min ? &(operator<) : &(operator>);
error: ‘operator<’ not defined
error: ‘operator>’ not defined
这样也不行:
bool (*compare_op)(int, int) = is_min ? &(operator<(int, int)) : &(operator>(int, int));
basic.h:83: error: expected primary-expression before ‘int’
basic.h:83: error: ex... 阅读全帖
s******u
发帖数: 501
35
用bind把member function和这个class的某个instance绑定起来就好了
object是有状态的,你需要把状态绑定到函数来伪装成一个free function
L*********s
发帖数: 3063
36
我的理解也是这样,另外函数指针也可以作为参数和返回值才行

★ 发自iPhone App: ChineseWeb 7.8
n*****t
发帖数: 22014
37
来自主题: Programming版 - 怎么在两个函数见找code path
这个遇到函数指针就哭晕在厕所了吧?
y**b
发帖数: 10166
38
来自主题: Programming版 - C++的"初始化"小结
以前读C++ Primer第四版中文版给自己写了个摘录,一搜索“初始化”,发现内容还很
庞杂,贴出来供参考,前面是页号。
042 两种初始化: 直接初始化(), 拷贝初始化=
044 变量初始化:类类型调用默认构造函数,局部内置类型不初始化,全局内置类型初
始化为零。
080 容器元素的值初始化(未指定元素的初始化式时):类类型调用默认构造函数,内置
类型置零。
097 数组元素的初始化(同变量初始化规则044):元素为类类型的数组调用默认构造函数
;局部内置数组不初始化,全局内置数组初始化为零。
117 new动态数组元素的初始化:类类型调用默认构造函数,内置类型不初始化,或指定
进行值初始化为零(且只能为零)。
151 new动态对象之初始化:类类型调用默认构造函数,内置类型不初始化,或指定进行
值初始化为任意值。
对提供了默认构造函数的类类型,没有必要进行值初始化, 会自动调用构造函数:
string *p=new string;和string *p=new string();无区别。
对内置类型或未定义默认构造函数的类类型,存在区别:int *p=new int... 阅读全帖
a********m
发帖数: 15480
39
来自主题: JobHunting版 - 请问这是什么level的面试题
简单说几句。板上大牛多,俺板门弄斧下,再说大牛们估计也觉得说这个太简单了。如
果有错误请指出。谢先。另外俺用c/c++的前几年也不是很理解很多细节,只管记语法
,或者有些理解错误,所以刚开始用c++的童鞋不清楚这个的话也是正常的。
首先要知道c++对象和structure除了缺省private以外没有区别。都是一堆成员变量组
成一个内存块。
但是如果类有一个虚函数以后每个对象会在开头多一个指针变量。现在的机器和编译器
一般来说是4个字节。这个指针指向这个类的虚函数表,而且所有的同类对象的指针都
指向同一个表。虚函数调用是先去这个表查询一下(编译器会分配一个下标),调用函
数实际类似 _vtable[下标](.....),其中_vtable 相当于(*(void*)pobj).
编译器编译虚函数的时候不是生成函数跳转,而是生成一个下标。对于同一个函数,基
类和子类有不同的虚函数表,但是有相同的函数下标。所以做_vtable[下标]动作的时
候虚函数就是子类的的实际函数了,只要指针本身是正确的(指向子类或者基类,而不
是强制转成乱七八糟的指针)。总的来说编译器负责产生下标,而对象负责提供一... 阅读全帖
a********m
发帖数: 15480
40
来自主题: JobHunting版 - 请问这是什么level的面试题
简单说几句。板上大牛多,俺板门弄斧下,再说大牛们估计也觉得说这个太简单了。如
果有错误请指出。谢先。另外俺用c/c++的前几年也不是很理解很多细节,只管记语法
,或者有些理解错误,所以刚开始用c++的童鞋不清楚这个的话也是正常的。
首先要知道c++对象和structure除了缺省private以外没有区别。都是一堆成员变量组
成一个内存块。
但是如果类有一个虚函数以后每个对象会在开头多一个指针变量。现在的机器和编译器
一般来说是4个字节。这个指针指向这个类的虚函数表,而且所有的同类对象的指针都
指向同一个表。虚函数调用是先去这个表查询一下(编译器会分配一个下标),调用函
数实际类似 _vtable[下标](.....),其中_vtable 相当于(*(void*)pobj).
编译器编译虚函数的时候不是生成函数跳转,而是生成一个下标。对于同一个函数,基
类和子类有不同的虚函数表,但是有相同的函数下标。所以做_vtable[下标]动作的时
候虚函数就是子类的的实际函数了,只要指针本身是正确的(指向子类或者基类,而不
是强制转成乱七八糟的指针)。总的来说编译器负责产生下标,而对象负责提供一... 阅读全帖
f****4
发帖数: 1359
41
非static成员函数指针的用法不是编译器的trick,那个是C++ syntax支持的。那个用
虚函数指针的才是编译器的trick。
所以只要你正常的用非static成员函数指针,正确调用是能保证的。
-非static成员函数指针是那个类的有效非static函数指针
-调用时instance有效
我前面那个例子
fakeFunc(102);
十有八九是Segmentation fault
再有一点
sf fakeFunc=(sf)&Function_pointer::next;
//warning: converting from ‘int (Function_pointer::*)(int)’ to ‘int (*)(
int)’
Function_pointer::f fps=(Function_pointer::f)&Function_pointer::current;
//error: invalid cast from type ‘int (*)(int)’ to type ‘int (Function_
pointer::*)(int)’
编译器是禁止你把static成... 阅读全帖
y**b
发帖数: 10166
42
来自主题: Programming版 - C++含有指针成员的类
研究了一下智能指针,在这里唯一的好处就是不需要完整类型了。
如果有完整类型,没看出一般情况下智能指针有什么好处,直接管理内置指针很健壮。
实际上智能指针因为引用计数的缘故,大大增加了复杂程度:
shared_ptr如果作为局部变量,在超出作用域时被销毁;如果是唯一引用,则其所指向
的对象也被销毁,所占用的内存会被释放;如果不是唯一引用,则内存不会释放。你看
这有多复杂。
举个例子,一个类有这样一个成员变量:含有智能指针shared_ptr的向量。那么不同成
员函数按一定顺序使用、拷贝或赋值这(整)个向量,会导致引用计数反反复复变化,指
针什么时候存在,什么时候销毁,简直是个灾难了。比如在一个成员函数里面生成一个
新的智能指针,那么在该成员函数之外该智能指针被释放;若将该智能指针加入到向量
,则在该成员函数之外该智能指针不被释放。这种情况,还不如管理内置指针清晰健壮
啊。而且还要保证shared_ptr在无用之后进行手动释放,否则浪费内存。
感觉智能指针只有保证销毁自己一个好处,带来的底层状态变化实在够繁复,没见比直
接管理内置指针更容易。
a****a
发帖数: 5763
43
http://bbs.weiphone.com/read.php?tid=507486
Mac OS X 10.6即所谓的Snow Leopard操作系统已正式发售。一如既往,Apple产品光
鲜的外表下凝聚了太多艰辛的劳作。ArsTechnic的John Siracusa以其独特的、专业的
、全面的视角深入翔实地体验这款最新的操作系统。
Weiphone.com将对该综述进行翻译整理并独家连载。欢迎关注
2009年底,Apple为新上市的Snow Leopard推出了C语言扩展,称之为“block
”。 Block为C语言以及源于C语言的C++、Objective-C和Objective C++增添了闭包(
closure)以及匿名函数功能。这些功能已在动态程序语言(dynamic programming
language)上应用了很长的时间,诸如Lisp、Smalltalk、Perl、Python、Ruby甚至
JavaScript。尽管使用动态语言的程序员早已对闭包(closure)和匿名函数习以为常,
然而对使用更为传统的静态编译语言(譬... 阅读全帖
D***n
发帖数: 6804
44
Delegate技术上说白了就是一种特殊调用函数的方法,和Hook很像。比如普通函数F()
里面运行流程是这样的:
A(); B(); C();
这个很死板,函数ABC预先要写好,编译/链接的时候必须能分别找到B的符号和实现。C
++的扩充思路是继承或者虚方法一类的,这个也必须在运行前就定死。
Delegate的思路是,不直接调用 B(),而是把B改成一个函数指针,平时指向一个特殊
值(比如self/NULL)。
(* B) (void ) = NULL;
上面程序变成
A();
if ( NULL != B) { //这个if可以控制B是must or optional
(*)B(x, y, z);
C();
这样在运行时B可以被动态赋予一个任意的函数指针。只要这个函数满足B希望的参数/
返回类型就可以了(比如参数必须是XYZ)。
在ObjC里,如果一个类型里有很多类似B这样的函数指针,就可以单独列出来形成一个
protocol,任何其他对象函数实现了这个protocol列出来的各种函数interface,再把
自己的地址赋予给B
B = & delegete;
当然在运行时,... 阅读全帖
A**u
发帖数: 2458
45
来自主题: JobHunting版 - 请问这是什么level的面试题
借这位的问题我也问问
Base类对象里有一个指针,指向Base的虚函数表
Derived类对象里也有一个指针,指向dervied 虚函数表
我的问题是,这两个指针是什么类型的? 一样吗?
Derived *pt_d;
base* pt_b = pt_d;
这个指针赋值过程发生了什么呢?
pt_b 现在指向了 Derived? 它的虚函数指针值改为dervied的虚函数表地址了?
这些怎么实现的呢
A**u
发帖数: 2458
46
来自主题: JobHunting版 - 请问这是什么level的面试题
借这位的问题我也问问
Base类对象里有一个指针,指向Base的虚函数表
Derived类对象里也有一个指针,指向dervied 虚函数表
我的问题是,这两个指针是什么类型的? 一样吗?
Derived *pt_d;
base* pt_b = pt_d;
这个指针赋值过程发生了什么呢?
pt_b 现在指向了 Derived? 它的虚函数指针值改为dervied的虚函数表地址了?
这些怎么实现的呢
s********r
发帖数: 403
47
如果希望 cast static成员函数指针, 需要修改函数指针的定义才能使用,
就变成楼主最初定义的那种函数指针模式。
一定要用指针去cast 调用非 static 成员函数,本身逻辑上有些奇怪,
因为,最终还是要有实例化的类才能发动,那不如直接用实例化类自身的成员函数,直
接调就是了,比如:
myFunc.update( 1, &Function_pointer::next);
改为
myFunc.update( 1, &myFunc.next);
又简单又明了
g***l
发帖数: 2753
48
指向子类对象的基类指针能访问子类中重载的虚函数,而不能访问其私有函数。
比如
class CBase
{
public:
CBase();
virtual void Print(){cout<<"base"< };
class CDerived: public CBase
{
public:
CDerived();
virtual void Print(){cout<<"Derived"< void Personal(){cout<<"Derived private owned"< }
1. int main()
2. {
3. CDerived oderived;
4. CBase* pbase=&oderived;
5. pbase->Print();
6. pbase->Personal();
7. }
编译的时间,error: ‘class CBase’ has no member named ‘Personal’in line 6.
我的问题是,
1. 如果是因为pbas... 阅读全帖
h*******0
发帖数: 270
49
来自主题: JobHunting版 - 请教一个入门级的C的指针问题
貌似楼主没分清引用和指针的区别。。。 你一开始传的是引用,然后函数里面的指针
就指向了a,b。 但是你函数中只是改变了指针的指向,并且这两个指针还是函数的局
部变量。 所以a,b值的本身就没有改变。 指针只是一个存了目标地址的变量, 要把
这个概念搞清楚
t**r
发帖数: 3428
50
几点把握住就没问题了:
1。函数接受类型定义是指针 或 非指针都行。调用方法一样 但是注意如果是指针,跟
c++里pass by reference一样 会可能改变原值。
2 看一个类型是否实现一个interface 原则上要严格遵守 指针对指针 非指针对非指针
。但是一个特例就是: 指针传给非指针method。可以过。
其他也没什么了。记不住多谢几个代码就记住了 比当年学习c指针操作容易多了
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)