| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1131 人关注过本帖
标题:菜芽 学C之我见三——指针(1)
取消只看楼主 加入收藏
豆芽小球
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-10-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
菜芽 学C之我见三——指针(1)
  首先要明确,一个变量在被编译的时候会根据其类型分配一定的长度, 而内存的每一个单元都有唯一的编号与之对应。比如:int 型分配二个字节,在内存中划出二个单元,这二个单元地址是 2000~2001。  

指针:      其实就是一个 变量 的 实际 首地址 这里指针指的是 2000 。。。

指针变量:  专门存储指针的变量(也就是某一个具体变量实际地址的首地址)。。。
 
* :这个标号可以读作“指向”。。。比如:一个已经定义的变量 P ,*p 就是 指向 指针变量P所对应的变量
       int i;
       int *p;(定义p是一个指针变量)
       p = &i;(&,是取地址符号)
那么这段话的意思就是,我先定义一个整型变量i, 再定义一个指针变量p(用来专门存储变量i首地址的变量),然后再将i的首地址取出来(&i)赋值给指针变量p。经过这三条语句后,在输入\输出时调用 *p,此时 *p就指向变量i的内容。

一:为什么定义指针变量的时候要 加 基类型?
    首先, 是变量就要先定义后使用;其次就是不同类型的变量长度不一样,这个时候要保证指针变量长度和变量长度一样,才方便进行指针运算。

二:指针变量做函数参数 与 “单向传送”的“值传递”方式的区别。
    一开始不太明白什么是参数变化实参不变化,还是参数变化实参发生变化。
   
  1、注意,指针做函数参数时候 声明的时候前加 void 也就是不需要返回值,那么我主调函数要想得到被调函数的结果的时候要怎么办呢? 对,就是要想办法通过参数值的改变来影响实参的值,这样在输出的时候,就会得到你想要的结果。(书上原话:指针变量指向的变量值发生变化,函数在调用结束后,这些变量值的变化依然保留)。
   
  2、“单向传送”的“值传递”; 在函数调用时,有时会要求返回一个值,这时将实参传递给形参,在通过被调函数的函数体得到一个值,用return语句传回主调函数,再输出返回值,但是实参的值没有发生变化。

三:注意的地方
 void change(int *p, int *q)
{
int t;//用 t 而不是用 *t, 因为*p 或者 *q 表示的就是一个具体变量的内容。无需在定义一个指针变量。 进行值交换
t = *p;
*p = *q;
*q = t;
}   
搜索更多相关主题的帖子: 内存 
2011-10-19 15:03
豆芽小球
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-10-14
收藏
得分:0 
回复 2楼 TonyDeng
能具体说下下嘛,想象成鼠标模型……
2011-10-19 15:31
豆芽小球
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-10-14
收藏
得分:0 
回复 4楼 单贴警告
呵呵,其实我写的时候也蛋疼,主要是想让大家看看我想的对不对,不知道你能不能先提供个好点滴建议,谢谢。
2011-10-20 09:00
豆芽小球
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-10-14
收藏
得分:0 
回复 6楼 TonyDeng
高人啦,抓紧吸收,再学习
2011-10-20 09:03
豆芽小球
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-10-14
收藏
得分:0 
感谢大家的建议,很受教
2011-10-20 09:05
豆芽小球
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-10-14
收藏
得分:0 
回复 5楼 A13433758072
多谢哦
2011-10-20 09:07
快速回复:菜芽 学C之我见三——指针(1)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016724 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved