| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 468 人关注过本帖
标题:新手菜鸟请教关于定义指针变量时遇到的概念困惑。
只看楼主 加入收藏
dlutlucas
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-11-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
新手菜鸟请教关于定义指针变量时遇到的概念困惑。
定义一个指针变量int *a,这里面的*是不是就是取内容运算符啊?可如果是的话,int *a=100这种写法又不正确,好像又有点矛盾了,大家都是怎么理解这个问题的?多谢指教。
搜索更多相关主题的帖子: 矛盾 
2013-11-03 19:48
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:3 
*不是取内容啦,这句可以这样理解,a是指针变量,int *  是表示这是指向整型的指针变量

编写的程序,不能改变世界,却可以改变自己...
2013-11-03 19:59
dlutlucas
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-11-3
收藏
得分:0 
回复 2楼 loveClangage
我主要是觉得int *a; *a=100;这么写没错,但并在一块写成int *a=100就是错,理解起来挺别扭的,怪怪的,可能是刚学指针不太习惯吧
2013-11-03 20:30
xixiqiqi
Rank: 2
等 级:论坛游民
帖 子:22
专家分:71
注 册:2013-10-10
收藏
得分:3 
int a;  定义一个变量叫a,类型为int型变量,也就是说在这段地址空间内(2或者4byte)存放的0或1会被按照int类型解释
a=100;  a为int类型变量,100为int类型常量,所以100可以赋值给a
        a被赋值后,a这个变量的地址空间里存放了'00000000 00000000 00000000 1100100',被解释为数值十进制的10

int *a;
或者写为
int* a;定义一个变量叫a,类型为int*型变量,,也就是说在这段地址空间内(2或者4byte)存放的0或1会被按照int*类型解释
a=100;  a为int*类型变量,100为int类型常量,所以100不可以赋值给a
        假如a变量的地址空间里存放了'00000000 00000000 00000000 1100100',会被解释为"地址100"
        
c语言不可以给指针变量直接赋地址,所以只能把变量的地址赋给指针变量(基类型要相同)
如,int *a,b=100;   // a的基类型与b相同
   a=b;            // 100是变量b的值,b为int类型,a为int*类型,所以b不能赋值给a
   a=&b;           // &b是变量b的地址,&b为int*类型,a为int*类型,所以&b能赋值给a
2013-11-03 23:28
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:3 
书上都写着还问。怎么定义一个指针变量,不用*不就成了普通的变量了吗?

总有那身价贱的人给作业贴回复完整的代码
2013-11-04 07:45
haiboself
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:193
专家分:196
注 册:2013-10-23
收藏
得分:3 
定义时*不代表取内容  只是用来表明你定义的变量是个指针变量而已 相当于身份证啦
2013-11-04 07:54
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:3 
可以这样想啦
int* a;
变量a的类型是什么? 答: (int*)

赋初值就相当于
类型 变量
变量 = 初值


莫问前尘有愧,但求今生无悔
2013-11-04 09:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:3 
以下是引用dlutlucas在2013-11-3 20:30:14的发言:

我主要是觉得int *a; *a=100;这么写没错,但并在一块写成int *a=100就是错,理解起来挺别扭的,怪怪的,可能是刚学指针不太习惯吧

int *a = val; 相当于 int *a; a=val; 而非你所想的 int *a; *a=val;

在C语言中习惯定义(C++不是这样,虽然最终含义一样)为 int *a; 即想表明 *a 类型为int,亦即 a 类型为 int*。
这其实非常容易理解:
int a; 你理解么?就是定义 a 为 int类型。
现在想将 a 定义为 int*类型,当然就是将上面的int改为int*就行,即
int* a;
当然,C语言习惯写成 int *a,C++习惯写成 int* a。
2013-11-04 09:51
yshx88
Rank: 2
等 级:论坛游民
帖 子:57
专家分:68
注 册:2013-10-20
收藏
得分:3 
*a表示一个指针变量,int *a是定义了一个整型的指针变量,

我的世界每天开出一朵花
2013-11-04 15:43
久歌无语
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2013-11-5
收藏
得分:3 
菜鸟路过
2013-11-05 23:57
快速回复:新手菜鸟请教关于定义指针变量时遇到的概念困惑。
数据加载中...
 
   



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

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