您的位置:首页 > 编程语言 > C语言/C++

C语言指针举例(From(新浪微博:@M了个J))学习笔记

2014-11-09 10:57 309 查看
举例一

.交换两个实参的值

(对比一下两段程序)

程序段一:

void swep(char m, char n)

{

char temp;

printf("交换前:m=%d, n =%d\n", m , n);

temp = m;

m = n;

n = temp;

printf("交换后:m=%d, n =%d\n", m , n);

}

int main()

{

char a =10, b =5;

printf("交换前:a=%d, b =%d\n", a , b);

swep(a, b);

printf("交换后:a=%d, b =%d\n", a , b);

return 0;

}

++++++++++++++++++++++++++++++++++++++

输出结果:

交换前:a= 10,b=5

交换前:m=10,n=5

交换后:m= 5,n=10


交换后:a= 10,b=5

从上面可以看到两个形参的值在交换前后发生了变化,但实参的值并未发生改变,这是因为swep(char ,char)只是进行一次值传递,并不能修改对应存储地址中的数值!下面的函数利用了指针对实参进行了值交换。

程序二:

void swep(char* m, char* n)

{

printf("交换前:*m=%d, *n =%d\n", *m , *n);

char temp;

temp = *m;

*m = *n;

*n = temp;

printf("交换后:*m=%d, *n =%d\n", *m , *n);

}

int main()

{

char a =10, b =5;

printf("交换前:a=%d, b =%d\n", a , b);

swep(&a, &b);

printf("交换后:a=%d, b =%d\n", a , b);

return 0;

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

输出结果:

交换前:a= 10,b=5

交换前:m=10,n=5

交换后:m= 5,n=10


交换后:a= 5,b=10

举例二:(一个函数返回多个值)

void sumAndminus(int m,int n, int *_sum, int* _minus)

{

* _sum = m+ n;

* _minus = m - n;

}

int main()

{

int a= 10, b=5;

int sum, minus;

sumAndminus(a, b , &sum, &minus)

printf("sum= %d , minus = %d", sum , minus)

return 0;

}

声明一个指针变量int *pa;的过程是在内存中开辟了一块存储位置的过程,int *pa是声明的一个地址,接收的值为地址,如&a(int a = 10)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: