当前位置: 代码迷 >> C语言 >> 求助 关于指针和数组的问题!
  详细解决方案

求助 关于指针和数组的问题!

热度:335   发布时间:2006-07-05 10:13:45.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编辑过]


----------------解决方案--------------------------------------------------------
char *per2 ;//必须给他内存空间,你没分配内存给他
----------------解决方案--------------------------------------------------------
以下是引用baidu在2006-7-5 10:13:45的发言:
你学过其它语言?
俺喜欢与知道自己在问什么的人交流

学过的语言`

SQL ,VB ,C++ ;比较熟悉 SQL 语言~
----------------解决方案--------------------------------------------------------

以下是引用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;
}



----------------解决方案--------------------------------------------------------

以下是引用baidu在2006-7-5 10:21:32的发言:
char *per2 ;//必须给他内存空间,你没分配内存给他

你的意思是还要给指针分配内存`~
----------------解决方案--------------------------------------------------------
char per2[80];这样或动态分配
----------------解决方案--------------------------------------------------------

以下是引用baidu在2006-7-5 10:25:22的发言:
char per2[80];这样或动态分配

char per2[80] ; 是数组吧~


----------------解决方案--------------------------------------------------------

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

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

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


----------------解决方案--------------------------------------------------------
  相关解决方案