设为首页 加入收藏

TOP

复习C语言中的指针
2014-11-23 23:21:06 来源: 作者: 【 】 浏览:1
Tags:复习 言中 指针

培训学习C已经过了两三年了,当初指针是简单的讲了一下,内存管理讲都没有讲.
几年的工作下来,感觉基础越来越重要,对编程思想理解深度很有帮助.
,写了一段小代码来验证自己的对指针的理解是否正确
环境: gcc version 4.4.5 (Debian 4.4.5-8)

C代码
#include

void s(int *i, int *j); //交换地址
void s2(int *i, int *j); //修改内存地址指向区块的值
void p(int i,int j); //打印值
void pp(int *i, int *j); //打印地址

int main (int argc, char const* argv[])
{
int i = 0,j = 1;
p(i,j);
pp(&i, &j);
s(&i,&j);
p(i,j); //值不变,i j的地址不变, 为什么不变,据我现在的理解,通过指针传过去的,能改变的只是指针所指向的内存区域,想改变指针变量的地址,我想只能在i j的本地变量的作用域内通过等号赋值的方式
pp(&i, &j);
s2(&i, &j);
p(i,j);
pp(&i, &j); //值变, i j 的地址不变
return 0;
}

void s(int *i, int *j)
{
int tmp;
tmp = *i;
i = j;
j = &tmp;
printf("address change\n");
p(*i,*j);
pp(i, j);
}

void s2 (int *i, int *j)
{
int tmp;
tmp = *i;
*i = *j;
*j = tmp;
}

void p (int i, int j)
{
printf("%d -- %d \n", i, j);
}

void pp (int *i, int *j)
{
printf("%p -- %p \n", i, j);
}


运行结果:
引用
0 -- 1
0xbfe2fccc -- 0xbfe2fcc8
address change
1 -- 0
0xbfe2fcc8 -- 0xbfe2fc9c
0 -- 1
0xbfe2fccc -- 0xbfe2fcc8
1 -- 0
0xbfe2fccc -- 0xbfe2fcc8

作者“ManGege's Blog”

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇初学GtkBuilder界面开发(重新整.. 下一篇二叉树代码练习

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: