| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1130 人关注过本帖
标题:关于指针的问题,
只看楼主 加入收藏
张君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:113
注 册:2010-5-13
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:19 
关于指针的问题,
#include<stdio.h>
main ()
{
int a[10],*p,i;
clrscr();
p=a;/*将数组的首地址付给p*/
shu(*p,10);/*调用输入数组*/
for(i=0;i<10;i++)
 printf(" %d",shu )/*输出你输入的数*/

}
 int shu (int *p,int n)
 {
  int i;
printf("please put *(p+%d)",n);/*输出:请输入十个数字*/
  for(i=0;i<10;i++)
  scanf ("%d",*p++);
  return;
 }
结果可以调用,但是不能将调用的正确返回主函数,指针问题感觉做起来好不顺手啊,关于指针的调用,该怎样调用呢?调用接口那到底该怎么写呢?学习指针他的关键是什么?
搜索更多相关主题的帖子: 指针 
2010-06-03 12:49
xiaomanaruto
Rank: 6Rank: 6
等 级:侠之大者
帖 子:79
专家分:443
注 册:2010-4-1
收藏
得分:5 
#include<stdio.h>
void main ()
{
int a[10],*p,i;
int shu(int *p,int n);//函数在后面定义,应该先声明
p=a;
shu(p,10);
for(i=0;i<10;i++)
printf(" %d",*p++ );//这里应该是输出地数
}
int shu (int *p,int n)
{
  int i;
printf("please put *(p+%d)",n);
  for(i=0;i<10;i++)
  scanf ("%d",p+i);
  return;
}
这是我给你修改后的程序,指针传递的是地址,千万别错了,而且指针如果做运算的话记得让它恢复原来的值。
2010-06-03 13:27
张君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:113
注 册:2010-5-13
收藏
得分:0 
回复 2楼 xiaomanaruto
谢谢。。

做自己就好,保持自己,记得微笑
2010-06-03 13:36
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:5 
引用[谭浩强C语言全书word版]10.2

变量的指针和指向变量的指针变量
变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。


[ 本帖最后由 BlueGuy 于 2010-6-3 18:20 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-06-03 18:08
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
变量的指针就是变量的地址。
//指针存储的是一个地址, 并不是说 变量的指针就是变量的地址
//指针是个变量, 而地址是个常量

存放变量地址的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。

//一个指针变量的值就是某个变量的地址或称为某变量的指针
前半句又给他自圆其说对了,后半不句又摸不着头脑了/


我就是真命天子,顺我者生,逆我者死!
2010-06-03 18:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
引用[谭浩强C语言全书word版]10.2

严格地说,一个指针是一个地址,是一个常量而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。

//牛头不对马嘴,指针就是一个变量,相当于用int类型所定义的变量,

[ 本帖最后由 BlueGuy 于 2010-6-3 18:37 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-06-03 18:28
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
引用[谭浩强C语言全书word版]10.2

通过指针访问它所指向的一个变量是以间接访问的形式进行的,所以比直接访问一个变量要费时间,而且不直观,因为通过指针要访问哪一个变量,取决于指针的值(即指向),例如"*p2=*p1;"实际上就是"j=i;",前者不仅速度慢而且目的不明。但由于指针是变量,我们可以通过改变它们的指向,以间接访问不同的变量,这给程序员带来灵活性,也使程序代码编写得更为简洁和有效。
// 不知所云
// j = i; 怎么就目的不明了?

我就是真命天子,顺我者生,逆我者死!
2010-06-03 18:44
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
引用[谭浩强C语言全书word版]10.2
main()
{ int a,b;
  int *pointer_1, *pointer_2;
  a=100;b=10;
  pointer_1=&a;
    pointer_2=&b;
  printf("%d,%d\n",a,b);
  printf("%d,%d\n",*pointer_1, *pointer_2);
}
 
对程序的说明:
在开头处虽然定义了两个指针变量pointer_1和pointer_2,担它们并未指向任何一个整型变量。只是提供两个指针变量,规定它们可以指向整型变量。程序第5、6行的作用就是使pointer_1指向a,pointer_2指向b。

// pointer_1已经指向了一个不确定的地址

我就是真命天子,顺我者生,逆我者死!
2010-06-03 18:46
gaoce227
Rank: 4
来 自:山东
等 级:业余侠客
帖 子:134
专家分:218
注 册:2008-4-5
收藏
得分:0 
以下是引用xiaomanaruto在2010-6-3 13:27:16的发言:

#include
void main ()
{
int a[10],*p,i;        
int shu(int *p,int n);//函数在后面定义,应该先声明/*这里还用"*p"吗?*/
p=a;
shu(p,10);
for(i=0;i<10;i++)
printf(" %d",*p++ );//这里应该是输出地数
}
int shu (int *p,int n)
{
  int i;
printf("please put *(p+%d)",n);
  for(i=0;i<10;i++)  /*"10"在这是什么意思?*/
  scanf ("%d",p+i);  /*p指向什么,应该有所指向吧?即需要初始化吧?不需要"&"吗?*/
  return;
}
这是我给你修改后的程序,指针传递的是地址,千万别错了,而且指针如果做运算的话记得让它恢复原来的值。
感觉越调用越麻烦。
2010-06-03 18:50
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
引用[谭浩强C语言全书word版]10.2
【例10.27】在输入的字符串中查找有无‘k’字符。
main(){
  char st[20],*ps;
  int i;
  printf("input a string:\n");
  ps=st;
  scanf("%s",ps);
  for(i=0;ps[i]!='\0';i++)
    if(ps[i]=='k'){
       printf("there is a 'k' in the string\n");
       break;
    }
  if(ps[i]=='\0') printf("There is no 'k' in the string\n");
}
//想炫耀自己会用指针?

我就是真命天子,顺我者生,逆我者死!
2010-06-03 18:51
快速回复:关于指针的问题,
数据加载中...
 
   



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

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