在以下代码中:
Public Sub test()
Dim cell As Range
For i = 1 To Range("A1:A4").Rows.Count
Set cell = Range("a" & i)
If cell = 1 Then
cell.EntireRow.Delete
i = i - 1
End If
Next i
End Sub
结构#include <stdio.h>
#include <stdlib.h>
typedef struct{
int a;
int b;
int (*func1)();
int (*func2)();
}STR_X2;
void init(STR_X2 self , int _a , int _b){
self.a = _a;
self.b = _b;
printf("Init a:%d, b:%d \n",self.a,self.b);
}
int multiply(STR_X2 self){
printf("Multiply a:%d, b:%d, res:%d\n",self.a,self.b,self.a*self.b);
return self.a*self.b;
}
int main(void) {
static STR_X2 val2;
val2.func1 = init;
val2.func2 = multiply;
printf("set values of a and b using init() function\n");
val2.func1(val2,3,5);
printf("result:%d\n",val2.func2(val2));
printf("\nset values of a and b directly\n");
val2.a=3;
val2.b = 5;
printf("result:%d\n",val2.func2(val2));
return EXIT_SUCCESS;
}
有两个成员作为函数指针。
STR_X2
设置为func1
,并且参数init()
和a
的值。b
设为func2
并与multiply()
和a
通过运行代码,我得到以下结果:
b
表示使用set values of a and b using init() function
Init a:3, b:5
Multiply a:0, b:0, res:0
result:0
set values of a and b directly
Multiply a:3, b:5, res:15
result:15
初始化参数不起作用。
有人能帮我找到这段代码有什么问题吗?
谢谢
答案 0 :(得分:1)
您按STR_X2
和init
中的值multiply
拍摄了 - 这会导致副本。用指针取代它来修改你在static
中声明的main
实例。