首页 > 解决方案 > 如何知道指向 C 中字符串的未定义指针数组中的行数/列数?

问题描述

#include<stdio.h>
int main(){

char*s[]={"we will teach you how to","Move a mountain","Level a building","Erase the past","Make a million"};

   printf("%u",sizeof(s));

return 0; }

运行这个将输出 20。大小不应该是 = 每个数组中的元素个数 x 数组个数 x sizeof(char) 吗?sizeof(s+1) 也打印 4 个字节。此外,我怎样才能获得指针数组的数量和没有。没有硬编码的上述代码中每个指针数组中的元素?

标签: carraysstringpointerssizeof

解决方案


您的数组中有 5 个条目s。每个条目都是一个char *. 因此sizeof(s)5*sizeof(char *)。您似乎在 32 位系统上运行,因此指针大小为 4 个字节。因此总大小为 20 个字节。

我怎样才能获得指针数组的数量和没有。每个指针数组中的元素

这部分问题有点不清楚。只有一个“指针数组”是s. 要获取数组中的元素数,您可以执行以下操作:

sizeof(s) / sizeof(*s)

要获取数组索引处字符串的长度,i您可以执行以下操作:

strlen(s[i])

推荐阅读