没有例子不说话
指向地址的指针
指针本身的大小
指向数组的指针
指针数组
指向指针数组的指针
多维指针数组
函数参数中使用指针
#include <stdio.h>
int myswap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 50;
int y = 30;
myswap(&x, &y);
printf("x:%d y:%d\n", x, y);
return 0;
}
// x:30 y:50
// 这个程序看似简单, 但是却应用到了而很多高级的算法,
// 指针 引用 当初不理解,现在终于理解了!
数组指针传址实现数组求和
#include <iostream>
using namespace std;
int mysum(int length, int *data){
int myresult = 0;
int i;
for(i = 0; i < length; i++)
{
myresult += *(data + i);
cout << *(data + i) << endl;
cout << data + i << endl;
}
return myresult;
}
int main() {
int x[5] = {1, 2, 3, 4, 5};
int restult;
restult = mysum(5, x);
cout << x << endl;
printf("%d\n", restult);
return 0;
}
// 输出结果:
//0x7ffecd866750
//1
//0x7ffecd866754
//2
//0x7ffecd866758
//3
//0x7ffecd86675c
//4
//0x7ffecd866760
//5
//0x7ffecd866750
//15
函数指针
#include <iostream>
using namespace std;
int add(int a, int b);
int main(int argc, char **argv)
{
int (*myfunc)(int a, int b);
myfunc = add;
int x = myfunc(12, 36);
cout << x << endl;
return 0;
}
int add(int a, int b)
{
return a + b;
}
// 48
模仿C++ 类别
#include <iostream>
using namespace std;
struct mynum{
int a;
int b;
int result;
void(*mod_add)(int a, int b, int *result);
};
void madd(int a, int b, int *result){
(*result)=(a + b) % 13;
}
int main(void){
struct mynum mnum;
mnum.a = 12;
mnum.b = 26;
mnum.mod_add=madd;
mnum.mod_add(mnum.a, mnum.b, &mnum.result);
cout << mnum.result << endl;
return 0;
}
// 12