小编KFC*_*KFC的帖子

什么是嵌套模式?

什么是嵌套模式?我无法理解为什么以下嵌套模式:

exception BadTriple

fun zip3 list_triple =
    case list_triple of
         ([],[],[]) => []
       | (hd1::tl1,hd2::tl2,hd3::tl3) => (hd1,hd2,hd3)::zip3(tl1,tl2,tl3)
       | _ => raise BadTriple

fun unzip3 lst =
    case lst of
         [] => ([],[],[])
       | (a,b,c)::tl => let val (l1,l2,l3) = unzip3 tl
                        in
                          (a::l1,b::l2,c::l3)
                        end
Run Code Online (Sandbox Code Playgroud)

另外,我无法理解嵌套模式嵌套case-expression之间有什么不同我可以得到一些关于这些事情的例子吗?

sml smlnj

0
推荐指数
1
解决办法
397
查看次数

在此函数中有缺陷,因为取消引用null无效,所以我想更改代码

long cread(long *xp) {
  return (xp? *xp : 0);
}
Run Code Online (Sandbox Code Playgroud)

它无效,因为它可能尝试从空地址读取

所以解决方案建议使用此代码

long cread_alt(long *xp){
  long tem = 0;
  if(*xp > 0){
   tem = *xp;
  }
  return tem;
Run Code Online (Sandbox Code Playgroud)

但我认为它也无效,因为if(*xp > 0)xp指向空地址时仍然有缺陷.

所以我想到了这段代码

 long cread_alt2(long *xp){
     long tem = 0;
     if(xp != NULL){
        tem = *xp;
     }
     return tem;
 }
Run Code Online (Sandbox Code Playgroud)

我有这个吗?

c++ pointers null-pointer dereference

-3
推荐指数
1
解决办法
140
查看次数

标签 统计

c++ ×1

dereference ×1

null-pointer ×1

pointers ×1

sml ×1

smlnj ×1