怎么将字符数组里的值赋给指针

如何将字符数组里的值赋给指针?
我声明了一个字符数组和字符指针,         
char  sz[100][20];
char *buf[];

我想问如何将指针指向数组?我知道下面这样写不对,正确的应该如何写?

buf =&sz[0][0];
for(i=0;i<100;i++)
{
      buf[i]=sz[0][i];
}

菜鸟一只,请指教.......
------解决思路----------------------
我写了个例子,楼主看下

char  a[100][100]={"abc","dsdg"};
char  *p[100];
int  i;
for(i=0;i<100;i++)
{
    p[i]=a[i];
}

还有char *buf[];这样子定义是错误的,要指定数组buf的大小

------解决思路----------------------

#include <stdio.h>

int main(int argc, char* argv[])
{
char sz[100][20] = {"Hello", "World!"};
char* buf[20];

buf[0] = sz[0];
buf[1] = sz[1];
printf("%s %s\n", buf[0], buf[1]);

return 0;
}