培训学习C已经过了两三年了,当初指针是简单的讲了一下,内存管理讲都没有讲.
几年的工作下来,感觉基础越来越重要,对编程思想理解深度很有帮助.
看<C Primer Plus>,写了一段小代码来验证自己的对指针的理解是否正确
环境: gcc version 4.4.5 (Debian 4.4.5-8)
#include <stdio.h>
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
分享到:
相关推荐
C语言指针练习填空和阅读程序题,难度适中,便于考前复习。
首先找到那个未定义的标识符,就是func,它的外面有一对圆括号,而且左边是一个*号,这说明func是一个指针,然后跳出这个圆括号,先看右边,也是一个圆括号,这说明(*func)是一个函数,而func是一个指向这一类函数的...
c语言指针讲义复习资料.pdf
指针变量作为函数参数(复习) 函数的指针和指向函数的指针变量 指针数组和指向指针的指针 堆内存的使用(指针数组实现动态数组) main函数的命令行参数
指针是C语言的精华,也是C语言的一个重要的特色,正确而灵活地...学习和使用C语言,就要深入地学习和掌握指针,因此在CCT中,每年都会出现大量的考题,在复习这一部分内容时以下几个方面应该引起大家注意。一、基本概念指针
C语言复习题很不错老师给 的,对你肯定有帮助
C语言指针经典总结,考试编程的利器,总结的还是非常不错的。
【C语言/知识梳理/期末复习】指针(三)
【C语言/知识梳理/期末复习】指针(二)思维导图
【C语言/知识梳理/期末复习】指针(一)思维导图
C语言第七章复习题7 指针.doc
C语言教程课件Ch10指针复习.ppt
指针习题(C/C++考试复习必备),C++语言指针内容很难,精选题目供参考学习
新手往往找不到合适的题来练手,特别是在C语言的指针这部分,因此我整理了点儿还行的题用来给想复习指针、新手、教学用、布置作业等合适的练手题来帮助大家练习。
详细的介绍了c语言中指针方面的知识,希望帮大家复习巩固该方面的知识
129_指针9_复习前面所有指针知识 实参和形参永远是不同,视频教程
C语言复习提纲整理目录 1. C语言关键字: 2.合法转义字符: 3. e代表10的指数 4.在数字前加0表示是八儿进... 5. int范围 6.输出格式符 7. Goto语句 8.格式控制 9. &&和川 10.真假 11. Switch case的default...
C程序设计基础-复习(与“指针”有关文档共23张).pptx
《C程序设计》总复习(与“指针”有关文档共28张).pptx
大学生期末C语言复习文件,内容包括:顺序加选择,循环,数组,函数,指针,内容从易到难,努力练习必定期末稳过!!!