这个程序哪里有有关问题?看了半天,不知道哪里有有关问题,悲哀~
这个程序哪里有问题?看了半天,不知道哪里有问题,悲哀~~~C/C++ codechar *test(const char s[]){char tstr[
这个程序哪里有问题?看了半天,不知道哪里有问题,悲哀~~~
C/C++ codechar *test(const char s[]){ char tstr[50]={'\0'}; unsigned int i,k=0; for(i=0;i<strlen(s);i++) { if(s[i]!='') tstr[k++]=s[i]; } return tstr;}
[解决办法]char tstr[50]={'\0'};
你返回了一个局部地址
改成
C/C++ codechar *tstr = calloc(strlen(s),sizeof(char));
[解决办法]
没仔细看- -
原来还有问题
返回的tstr是局部变量
char tstr[50]={'\0'};
改成
char *tstr = NULL;
tstr = malloc(sizeof(char) * 50);
memset(tstr, '\0', sizeof(char) * 50);
[解决办法]
哈哈,被我找到了。你把那个char tstr[50]声明为全局变量就可以了,前面加上static就可以了。原来的是在栈上申请的一段空间,函数调用结束就被释放掉了,所以不能传进去。
[解决办法]
[解决办法]
[解决办法]
[解决办法]
[解决办法]
指针和指针指向的地址是2个东西
不要混为一谈
你只是给指针分配了空间
指针指向的地址都没分配空间
[解决办法]
lz~~~ 加油呀!
[解决办法]
我汗,楼主把那个数组定义成全局的吧.就OK了!
[解决办法]
还有这个:
C/C++ codeif(s[i]!='')
[解决办法]
[解决办法]
[解决办法]
永远不要返回局部非静态变量的指针或引用
[解决办法]
没什么好悲哀的吧。。。我以前比你还菜呢。。
[解决办法]
在java里面,如果实例化一个对象,对象的引用存放在堆栈中,而对象是存储在堆中,这个我是可以理解的~~
在http://wenku.baidu.com/view/2a2a434de518964bcf847ccd.html这篇文中,大家看我的理解有没有错哈~
在系统内存中,内存被分成不同性质的存储区,堆、栈、自由存储区、存放全局或静态变量的存储区、常量存储区,系统会根据用户声明的变量类型来分配存储空间~~~
当我们定义一个数组变量 char s[]时,如果没有为它分配内存,那么编译器会自动的为其分配栈存储区,当操作完成后,又自动的将内存给释放掉,比如题目中的,在进行return返回前,已经将tstr变量给释放了
而在create函数中,是在自由存储区开辟的内存,由程序员声明动态生成,如果程序员没用进行free,那么它一直都会存在,p、q是指针,通过malloc函数为其分配了堆,如果程序员不delete,那么它会一直存在到程序结束~~~~~
[解决办法]
建议楼主看一下c陷阱与缺陷一书里3.2章节<非数组的指针>,里面有个例子可以解惑.
[解决办法]
学习ing,和楼主一样的菜鸟飘过。。。。。