| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1293 人关注过本帖
标题:求助 关于指针和数组的问题!
只看楼主 加入收藏
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
你学过其它语言?
俺喜欢与知道自己在问什么的人交流

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-07-05 10:13
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
收藏
得分:0 

晕,其实说明一下就应该可以了,我的看法是:
指针指的是地址,不存放实际数据
数组里存放的就是实际数据了,因为每个数据都会到内存里去占地盘,如果那是油麻地,那指针就指向油麻地;如果数据存放到五角大楼,那核弹的指向就是五角大楼!

不知道我的理解有没有错了!

2006-07-05 10:16
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
收藏
得分:0 

那你帮我看看这个程序 那里有问题`~!~

#include <string.h>
#include <stdio.h>
char * substring(char *str1,char *str2,int a,int b) ;

int main( )
{
char str[] = "a=01234567890;b=1234567890;c=12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ;
char *per1 ;
char *per2 ;

per1 = str ;

substring(per2,per1,3,10) ;

}

/* 这个函数功能是 取某一段字符串的作用~ */
char * substring(char *str1,char *str2,int a,int b)
{
char *ptr1=str1;
int i ;
for(i=a;i<a+b;i++)
{
*ptr1=*(str2+i-1);
ptr1++ ;
}
*ptr1=0;
return str1;
}

[此贴子已经被作者于2006-7-5 10:18:30编辑过]


2006-07-05 10:17
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
char *per2 ;//必须给他内存空间,你没分配内存给他

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-07-05 10:21
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
收藏
得分:0 
以下是引用baidu在2006-7-5 10:13:45的发言:
你学过其它语言?
俺喜欢与知道自己在问什么的人交流

学过的语言`

SQL ,VB ,C++ ;比较熟悉 SQL 语言~


2006-07-05 10:21
lxs5216
Rank: 1
等 级:新手上路
帖 子:144
专家分:0
注 册:2006-2-3
收藏
得分:0 
以下是引用blackkey在2006-7-5 10:17:52的发言:

那你帮我看看这个程序 那里有问题`~!~

#include <string.h>
#include <stdio.h>
char * substring(char *str1,char *str2,int a,int b) ;

int main( )
{
char str[] = "a=01234567890;b=1234567890;c=12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ;
char *per1 ;
char *per2 ;

per1 = str ;

substring(per2,per1,3,10) ;//per2指向五角大楼的马桶,肯定会错了!!

}

/* 这个函数功能是 取某一段字符串的作用~ */
char * substring(char *str1,char *str2,int a,int b)
{
char *ptr1=str1;
int i ;
for(i=a;i<a+b;i++)
{
*ptr1=*(str2+i-1);
ptr1++ ;
}
*ptr1=0;
return str1;
}


2006-07-05 10:21
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
收藏
得分:0 
以下是引用baidu在2006-7-5 10:21:32的发言:
char *per2 ;//必须给他内存空间,你没分配内存给他

你的意思是还要给指针分配内存`~


2006-07-05 10:22
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
char per2[80];这样或动态分配

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-07-05 10:25
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
收藏
得分:0 
以下是引用baidu在2006-7-5 10:25:22的发言:
char per2[80];这样或动态分配

char per2[80] ; 是数组吧~


2006-07-05 10:29
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 

对,你可以认为per2[]也是一种特殊的指针,只不过其内存分配是在编译时完成,即程序一运行就得为其分配好内存空间.
第二,per2不能改变指向

如果是char *per2;那么,你记住,per2它只有一个int大小,甚至你完全可以把它看成一个int;

如果你想per2指向一个字符串(注意,不是赋给它一个字符串),那么你需要做的是必须先有一些存贮字符串的空间(这个就叫动态分配内存),然后,再把这些空间的首址值赋给per2,这样你才可以操作


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-07-05 10:40
快速回复:求助 关于指针和数组的问题!
数据加载中...
 
   



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

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