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)。
.交换两个实参的值
(对比一下两段程序)
程序段一:
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)。
相关文章推荐
- C语言学习笔记.指针4--数组指针和指向数组的指针变量(一)
- C语言指针学习笔记
- C语言学习笔记(15指针)
- C语言指针学习笔记
- C语言学习笔记(五)指针
- C语言学习笔记7--指针
- what's in string? c语言string类函数实现汇总 都是学习使用指针的好例子啊(算是读书摘抄和笔记吧)
- 【黑马程序员】C语言学习笔记之指针(十一)
- iOS开发学习笔记 2-4 C语言部分 指针
- C语言学习笔记(12指针)
- Linux 变干边学 学习笔记之C语言开发常用举例
- C语言学习笔记(18多级指针)
- 【C语言学习笔记】指针的“加减”运算
- C语言学习笔记【指针04】指针数组与指向指针的指针 推荐
- C语言学习笔记(13指针)
- C语言学习笔记之指针篇(一)
- C语言-指针的基础学习笔记(1)
- C语言学习笔记(17指针)
- C语言高级编程学习笔记--指针
- 重新学习C语言笔记--指针