You cannot do this for execv() as the manpage says:
The list of arguments must be terminated by a null pointer, and, since these are
variadic functions, this pointer must be cast (char *) NULL.
The usage of str in execv() is like the following example
void func1(char *str[])
{
for(int i=0; str[i]!=NULL; i++)
printf("%s:%s\n", __func__, str[i]);
}
However, if the function has a declaration and usage like:
void func2(char *str[], int n)
{
for(int i=0; i<n; i++)
printf("%s:%s\n", __func__, str[i]);
}
you can call it as the following to pass in only "asd" till "hello".
func2(str+a, n);
//where str[a] is "asd" and str[a+n-1] is "hello"