俺喜欢与知道自己在问什么的人交流
----------------解决方案--------------------------------------------------------
晕,其实说明一下就应该可以了,我的看法是:
指针指的是地址,不存放实际数据
数组里存放的就是实际数据了,因为每个数据都会到内存里去占地盘,如果那是油麻地,那指针就指向油麻地;如果数据存放到五角大楼,那核弹的指向就是五角大楼!
不知道我的理解有没有错了!
----------------解决方案--------------------------------------------------------
那你帮我看看这个程序 那里有问题`~!~
#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 ;//必须给他内存空间,你没分配内存给他
----------------解决方案--------------------------------------------------------
你学过其它语言?
俺喜欢与知道自己在问什么的人交流
学过的语言`
SQL ,VB ,C++ ;比较熟悉 SQL 语言~
----------------解决方案--------------------------------------------------------
那你帮我看看这个程序 那里有问题`~!~
#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;
}
----------------解决方案--------------------------------------------------------
char *per2 ;//必须给他内存空间,你没分配内存给他
你的意思是还要给指针分配内存`~
----------------解决方案--------------------------------------------------------
char per2[80];这样或动态分配
----------------解决方案--------------------------------------------------------
char per2[80];这样或动态分配
char per2[80] ; 是数组吧~
----------------解决方案--------------------------------------------------------
对,你可以认为per2[]也是一种特殊的指针,只不过其内存分配是在编译时完成,即程序一运行就得为其分配好内存空间.
第二,per2不能改变指向
如果是char *per2;那么,你记住,per2它只有一个int大小,甚至你完全可以把它看成一个int;
如果你想per2指向一个字符串(注意,不是赋给它一个字符串),那么你需要做的是必须先有一些存贮字符串的空间(这个就叫动态分配内存),然后,再把这些空间的首址值赋给per2,这样你才可以操作
----------------解决方案--------------------------------------------------------