sub cut2fmt { my(@positions) = @_; my $template = ''; my $lastpos = 1; foreach $place (@positions) { $template .= "A" . ($place - $lastpos) . " "; $lastpos = $place; } $template .= "A*"; } $fmt = cut2fmt(8, 14, 20, 26, 30); print "$fmt\n"; 在上边的函数中$template是不是在调用函数的时候存储的数值是@temolate={A7,A6,A6,A6,A4,A*}; 不和c语言中的一样只...
by bst - Perl - 2004-09-26 10:17:04 阅读(855) 回复(1)
return任何局部变量都是可以的。 不可以的是不能返回局部变量的指针。 return常数是可以的。但如果该常数是指针,不能指向局部变量。 看func1到func6,有的对有的错。 欢迎补充 func1() { SOMTE_TYPE v; return v; } func2() { SOME_TYPE v; return &v; } func3() { char *cp = "1234567"; return cp; } func4() { char buf[] = "1234567"; return buf; } func5() { return "1234567"; } func6() { char ...
今天测试了一个基础的问题。有点疑问:
[code][wizard:/home/wizard/src/temp]cat main.c
#include
static int sn_reserve (struct state *state, size_t n) { return state->;s + n >; state->;theend; } 其中state机构体定义如下: struct state { unsigned char *str; unsigned char *s; unsigned char *theend; size_t sz; size_t max_sz; int (*append_char)(struct state *, unsigned char); int (*reserve)(struct state *, size_t); /* XXX - methods */ };
如题,例如我有 int f(int x){ if(x==2)return 1;//x不等于2的时候没有相应的返回语句 } main(...){ ... printf("%d\n",f(3)); ... } 这里printf的输出结果是个很奇怪的数,而且每次都一样! 我想知道,既然f要求返回一个整数,那么在有的路径下没有显示的写return语句,这个return的值是编译器默认生成的吗? 还是返回了堆栈上的某个东西,实际上破坏了堆栈可能导致未定义的结果呢? 还请dx指点!
需要php调用存储过程,返回一个结果集,发现很困难,找了半天,终于在老外的论坛上找到解决方案,这里本地化一下。 关键就是两点 1)define('CLIENT_MULTI_RESULTS', 131072); 2)$link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error()); 下面就可以正常使用了,以下是例子程序。 '.$row["title"].'('.$row["page_time"].')'.''; echo ...
需要php调用存储过程,返回一个结果集,发现很困难,找了半天,终于在老外的论坛上找到解决方案,这里本地化一下。 关键就是两点 1)define('CLIENT_MULTI_RESULTS', 131072); 2)$link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error()); 下面就可以正常使用了,以下是例子程序。 '.$row["title"].'('.$r...
代码如: [code] void f(PTRType ptr) { //...对ptr进行一些操作 fprintf(stderr, "ptr is %s", (ptr == NULL) ? "NULL" : "not NULL"); return ; } int main() { PTRType ptr = NULL; ptr = MakeDoc("Hello"); fprintf(stderr, "ptr is %s", (ptr == NULL) ? "NULL" : "not NULL"); f(ptr); fprintf(stderr, "ptr is %s", (ptr == NULL) ? "NULL" : "not NULL"); } [/code] ...