社区
C语言
帖子详情
怎样知道char**的里面有多少个string?(在线等)
Catai算法晓极客
2007-04-01 04:21:25
e.g.
char *abc[] = {
"11", // 1
"23",
"",
"44", // 2
"11",
0};
应该是有6个string
怎样得到6?
谢谢!!
...全文
356
15
打赏
收藏
怎样知道char**的里面有多少个string?(在线等)
e.g. char *abc[] = { "11", // 1 "23", "", "44", // 2 "11", 0}; 应该是有6个string 怎样得到6? 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Catai算法晓极客
2007-04-01
打赏
举报
回复
Thanks HewpKanXue,
char **p=test;
while(*p++);
int size=p-test;
It works.
Catai算法晓极客
2007-04-01
打赏
举报
回复
谢谢各位!给分!
hzhiyang84
2007-04-01
打赏
举报
回复
是个难题,呵呵
hzhiyang84
2007-04-01
打赏
举报
回复
上面我已经讲到,其实 char ** test也是一个指针,所以
sizeof(test)的值在32位系统中也就是 4
而size of (char *)在32位系统中也是 4
所以得到的当然是1而不是6
HewpKanXue
2007-04-01
打赏
举报
回复
//然后
int size= sizeof(test)/sizeof(char*);
为什么现在size就哪不到呢?只能返回 1,而不是6.
==============================================
数组作参数传递,只能退化为指针。所以sizeof(test)==test指针长度;传参数的结果
怎样得到6?
void function(char **test) //(char *test[])也一样。
{
char **p=test;
while(*p++);
int size=p-test;
}
hzhiyang84
2007-04-01
打赏
举报
回复
只能求出字符指针数祖char * strArray[](也就是我们通常所说的字符串数组)里面包含的字符串的个数,
但不能求一个char ** strPointer里面包含的字符串的个数.
其实原因很简单,因为字符指针数组
如
char * strArray[] =
{"abc",
"def",
"",
""
}
实际上是一个指针数组,这些指针指向一个字符,
也就是所
strArray[0] 指向 "abc"的第1个字符a
strArray[1] 指向 "def"的第1个字符b
strArray[2] 指向 ""的第1个字符 '\0'
显然一个字符指针数组里含有的字符串个数
可以通过字符指针数组的总长度除以一个字符指针的长度得到
也就是
sizeof(strArray)/sizeof(char*);
你也可以用
sizeof(strArray)/sizeof(strArray[0]);
你甚至还可以用
sizeof(strArray)/sizeof(int *)因为指针的长度是确定的
而char ** strPointer;
实际上是指向一个地址
假设 strPointer = 0x0012ff64;
那么0x0012ff64位置上便是一个指向char *的指针
假设其值是0x0042201c,也就是说这个字符的地址是
0x0042201c
Catai算法晓极客
2007-04-01
打赏
举报
回复
接:
void function(char **test) //(char *test[])也一样。
{
//然后
int size= sizeof(test)/sizeof(char*);
为什么现在size就哪不到呢?只能返回 1,而不是6.
}
谢谢!!
已经加分到40。
Catai算法晓极客
2007-04-01
打赏
举报
回复
谢谢回复, sizeof(abc)/sizeof(char*) 可以 得6,
但是现在问题是我把 abc 传到函数
int main()
{
char *abc[] = {
"11", // 1
"23",
"",
"44", // 2
"11",
0};
function(abc);
}
void function(char **test) //(char *test[])也一样。
{
//然后
int size= sizeof(tiles)/sizeof(char*);
为什么现在size就哪不到呢?
}
谢谢!!
我会加分。
elsove812
2007-04-01
打赏
举报
回复
cout << sizeof(*abc) / sizeof(int) << endl;
这样就行了,abc里存的是指针,都是int型的。新来的,给点积分吧,呵呵
jixingzhong
2007-04-01
打赏
举报
回复
如果得到的结果是 5,
即需要得到有效元素的个数,
可以遍历数组判断指针得到 ~
通常,
这样的定义方式,
在末尾增加一个 0 元素,
多是为了作为一个 数组边界标志所用的 ~
jixingzhong
2007-04-01
打赏
举报
回复
如果得到的是 6,
那么使用sizeof(abc)/sizeof(char*)
(sizeof(数组名)/sizeof(数组元素类型)得到数组元素的个数)
Arthur_
2007-04-01
打赏
举报
回复
for 循环找字符'\0'的个数n
结果因该是n-1
hellox
2007-04-01
打赏
举报
回复
sizeof(abc)/sizeof(char*)
ytfhwfnh
2007-04-01
打赏
举报
回复
sizeof(abc)/sizeof(abc[0])应该可以吧?没测试。
believefym
2007-04-01
打赏
举报
回复
cout<<sizeof(abc)/sizeof(char*)<<endl;
string
与
char
*比较 ——why use
string
1
string
是一个类,
char
*是一个指向
char
型的指针。
string
封装了
char
*,管理这个字符串封装了
char
*,是一个
char
*型的容器,使用灵活性强便于功能扩展。 2 不用考虑内存释放和越界
String
封装了
char
*,负责...
c语言中
char
*
string
,浅析
string
与
char
*
char
[]之间的转换
有时候在字符序列中进行遍历,标准的
string
类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。注意,与
char
*不同的是,
string
不一定以NULL('\0')结束。
string
长度可以根据...
string
和
char
*两者的区别是什么 ?什么时候用
string
好? 什么时候用
char
* 合适?什么时候同时都能用?...
当我们要存一个串,但是不
知道
其他需要多少内存时, 用
string
来处理就最好不过了。当你
知道
了存储的内存的时候,可以用
char
*,但是不如用
string
的好,用指针总会有隐患。用
string
还可以使用各种成员函数来处理串的...
C++中const
char
*,
string
与
char
*的转化
1:
string
转化成const
char
* 可以通过调用
string
类中的c_str函数实现
string
向const
char
*的转换 //
string
与const
char
*转换
string
s = "
string
_To_const
char
* "; const
char
*c_s=s.c_str(); 还可以直接使用...
C++
string
和
char
*的区别
里面
包含了对字符串的各种常用操作,它较
char
* 的优势是内容可以动态拓展,以及对字符串操作的方便快捷,用+号进行字符串的连接是最常用的操作。
char
*:
char
* 是一个指向字符的指针,是一个内置类型。可以指向一个...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章