黑马程序员技术交流社区
标题: 关于C语言指针的问题 [打印本页]
作者: haohaoxuexi 时间: 2014-4-3 16:51
标题: 关于C语言指针的问题
本帖最后由 haohaoxuexi 于 2014-4-3 18:59 编辑
#include<stdio.h>
void changer(int*);//这是什么意思?
int main()
{
int data =1;
int* datapointer =&data;//这也不太懂
printf("Before changer(),data=%i\n",data);
changer(datapointer);
printf("After changer(),data=%i\n",data);
return 0;
}
void changer(int* pointer)
{
*pointer=2;
}
昨天问了一道了,但还是被书上这个指针题给难着了,求大神解答
作者: 沙洲冷 时间: 2014-4-3 17:04
第一个注释是声明一个函数,该函数接收int *类型的参数,第二处是把变量data的地址赋值给指针变量datapointer。另外你的指针变量写法错误,比如:int* datapointer =&data;应写为int *datapointer = &data;int与*之间应该有一个空格。
作者: 程浩 时间: 2014-4-3 17:12
指针,指针,指针,就是指向一个地方的针咯
void changer(int*);//这是什么意思?-------就是说,你这个函数的参数是指针类型
int data =1;
int* datapointer =&data;//这也不太懂------&data这个东西的意思就是把data存在内存中的地址弄出来,datapointer这个指针一看到你data原形毕露了,就一直盯着data
printf("Before changer(),data=%i\n",data);-------这里当然是很正常的输出data啦,就是1嘛
changer(datapointer);---------你看,datapointer是指针类型对吧,那就可以传给同样需要指针类型的这个参数咯,刚好吻合啊
printf("After changer(),data=%i\n",data);//
return 0;
}
void changer(int* pointer)
{
*pointer=2;----------记住了,当使用星*加在指针上面,就说明指针现在不仅是盯着看了,还要扑上去,把目标抱住,这里把2赋给他们,那么目标的值不就被改变了嘛,所以内存中data的值就改变了。再返回上面去看
}
作者: agelessman 时间: 2014-4-3 17:34
#include<stdio.h>
void changer(int*);//这是什么意思?这是函数的一个声明,给函数的变量是个指向整型的变量
int main()
{
int data =1;
int* datapointer =&data;//这也不太懂,创建一个指针变量datapointer,指向data
printf("Before changer(),data=%i\n",data);
changer(datapointer);
printf("After changer(),data=%i\n",data);
return 0;
}
void changer(int* pointer)
{
*pointer=2;
}
学指针千万别钻牛角尖,
作者: 远人 时间: 2014-4-3 17:34
我复制你代码,在你代码中修改错误后给你注释解释
- #include<stdio.h>
- void changer(int *);//这里声明下面定义的changer函数
- int main()
- {
- int data =1;
- int *datapointer =&data;//这里定义了一个指向data的指针datapinter
- printf("Before changer(),data=%i\n",data);
-
- changer(datapointer);//这里掉用上面的changer函数,修改data的值,这里给你配图了
- printf("After changer(),data=%i\n",data);
- return 0;
-
- }
- //这里定义一个函数,函数中有一个int类型的指针形参,
- void changer(int *pointer)
- {
- *pointer=2;
- }
复制代码
这是内存分析配图
最后提醒一下,以后提问,代码尽量有发表框中的代码工具发表代码
-
B0B3DE3E-FC44-47C2-BBFE-B1CCB5646AFB.png
(73.77 KB, 下载次数: 8)
配图
作者: 时间: 2014-4-3 17:47
:@:shutup::o{:3_49:}
作者: 时间: 2014-4-3 17:49
{:3_53:}{:3_47:}{:3_62:}Q540530281
作者: haohaoxuexi 时间: 2014-4-3 18:56
恩,以后会注意的,谢谢
作者: haohaoxuexi 时间: 2014-4-3 18:58
谢谢解答
作者: 王雪冬 时间: 2014-4-3 20:40
首先 int* datapointer 定义错误 ,应该是 int *datapointer。但是你不要晕了,这个指针变量是datapointer。
而不是*datapointer。指针变量是用来存储地址的,那&符号就是将 data这个变量的地址取出来。然后复制给datapointer用来达到简介的操作data变量。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |