24小时热门版块排行榜    

查看: 711  |  回复: 5
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

dzdesigned

银虫 (初入文坛)

[交流] 【求助】求助高手c语言中关于指针的疑惑

本人刚学习C语言不久,最近学到指针这里有一点疑惑一直未能解决,希望大家帮帮忙。
  比方说定义一个指针 int*p,变量a, 再把a得地址赋给p就是p=&a吧。这个时候P中存放的就是变量a地址,而*p则存放的是变量a中的数据。 但书上有时也有这种写法
int*p=&a,这不就和指针变量存放地址,指针指向数据相违背了吗?对于这种表示方法 int*p=&a本人久久不能理解。还有就是比方说我先谢了一个子函数,fun(int*x,int*y),再在主函数中调用,我写fun(&a,&b)。函数调用后的形参和实参不是要求对应码?这个时候两个函数之间又是怎样传递的呢?应该作何理解?
问了老师解释也不明白,希望编程高手不吝赐教,在此谢过。

[ Last edited by dzdesigned on 2009-8-3 at 20:37 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dzdesigned(金币+1,VIP+0): 8-4 14:05
引用回帖:
Originally posted by bslt at 2009-8-3 22:05:
int * p = &a; // 应该可以这样理解,声明一个int型指针变量 p,并把a的地址&a赋给p,也就是初始化赋值。声明指针变量并对其进行初始化是很重要。

另外 你可以在网上查一下 指针变量声明时 * 号 放的位 ...

嗯。。。
4楼2009-08-04 09:20:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

suton

金虫 (正式写手)

★ ★ ★ ★
bslt(金币+1,VIP+0):赞一个!^_^ 8-3 22:06
dzdesigned(金币+3,VIP+0):恩,明白了。是这样。 8-4 14:04
问题 1 :
int*p=&a  应该为 int*  p=&a ,  也就是说 int* 这两个符号合成一个新的声明符。声明了 指针 p  ,然后把 p 的初值设为 &a.

问题2 : 与上同, int* 是一个整体,而不是 int  和  *P ; 也不是int , * , P三个
2楼2009-08-03 22:05:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bslt

金虫 (著名写手)

--<-<-<@

★ ★ ★
suton(金币+2,VIP+0):谢谢 8-3 22:06
dzdesigned(金币+1,VIP+0):谢谢。 8-4 14:05
int * p = &a; // 应该可以这样理解,声明一个int型指针变量 p,并把a的地址&a赋给p,也就是初始化赋值。声明指针变量并对其进行初始化是很重要。

另外 你可以在网上查一下 指针变量声明时 * 号 放的位置的习惯问题。方便你对指针的理解。

fun(int * x, int * y),对于这种 指针作为参数的传递,你main函数中调用时fun(&a, &b)其实就是地址传进来了,应该好理解的。这里的x,y就是两指针型的变量,和其他变量类型一样。

不过 注意一点就是,指针传递时,改变该指针的内容将导致 指针所指地址对应值的改变,此处就是对应a,b的值。

对于这个问题的进一步理解,你可以在网上 查一查 关于 值传递,引用传递,指针传递 的内容。
别迷恋哥,哥不只是个传说...
3楼2009-08-03 22:05:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见