C语言 为什么取消引用 2 次有效,3 次给出分段错误



它如何打印具有两个取消引用的 3D 数组的元素。 我认为它需要类似 3 个取消引用printf("%c",*(*(*(a+0)+1)+1));的东西. 有理解危机。

int main() 
{ 
char a[2][3][3] = {'a','b','c','d','e','f','g', 
'h','i','j','k','l','m'}; 
printf("%s ", **a); 
getchar(); 
return 0; 
} 

为指定的%s提供的参数应该是一个指针。对于 '%s,printfuses the pointer to fet characters from memory. Therefore, for a three-dimensional array, applying two*to the name results in the correct type, a pointer tochar'。

对于%c,参数应该是带有字符值的int。对阵列应用三个*即可实现此目的。

注意:虽然**a%s提供了正确的类型,但该参数应该指向以 null 结尾的一维字符串中的字符。允许字符跨数组维度继续是狡猾的。

相关内容

  • 没有找到相关文章