首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关sizeof与指针数组,该怎么处理

2012-03-17 
有关sizeof与指针数组char const *keyword[]{do,for,if,register,return,switch,while}求

有关sizeof与指针数组
char const *keyword[]={
  "do",
  "for",
  "if",
  "register",
  "return",
  "switch",
  "while"
  };
 
求sizeof(keyword)/sizeof(keyword[0]))
   
我现在有些越琢磨越糊涂,keyword和keyword[0]都代表什么,sizeof这两个值结果所多少?

[解决办法]
keyword是一个字符串数组,keyword[0]代表字符串数组里的第一个元素也就是第一个字符串“do”,
[解决办法]
keyword 是一个由7个元素为char const *组成数组,keyword[0]自然就是其中一个元素char const *
[解决办法]
keyword只是一个指针 sizeof得到的值 4
最后得到的 结果2
[解决办法]
和countof是一个作用啊, 就是计算数组元素的个数的
[解决办法]
弱弱回答一下, 这个不是求数组长度嘛?
[解决办法]
keyword本身是一个数组
sizeof一个数组,指数组的大小,
数组里面存的是指针,指针是4个字节,
所以总共是28个字节
28/4=7
就是7个字符串
[解决办法]
keyword是一个数组,其中的类型是指针类型
共有7个,所以sizeof(keyword)=7*4=28
而keyword[0]是一个指针,所以sizeof(keyword[0])=4
在32位机器上面
[解决办法]
数组名就是内存自动分配的首地址,求sizeof的时候就是求这块地址的内存的大小,数组的第一个数从0开始

感觉LS理解有误,
char a[100];
int b[100];
int len = sizeof(a)/sizeof(b[0]);
这样就会不同
[解决办法]

探讨

keyword本身是一个数组
sizeof一个数组,指数组的大小,
数组里面存的是指针,指针是4个字节,
所以总共是28个字节
28/4=7
就是7个字符串

[解决办法]
你这是一个字符串常量指针数组,字符串的值是不会存在数组里的,存的只有指针。
sizeof获取的是指针的宽度。要想得到字符串的话请用strlen()
[解决办法]
多看,多记,多想!
[解决办法]
数组在空间所占的内存,另一个是数组元素所占大小
[解决办法]
keyword 是一個指針數組,數組的每一項都是一個指針。
[解决办法]
6l正解
[解决办法]
注意区分strlen()和sizeof().
[解决办法]
C/C++ code
#include <string.h>#include <stdio.h>int main(int argc, char **argv){        char const *keyword[]={          "do",          "for",          "if",          "register",          "return",          "switch",          "while"        };        int i, size;        size = sizeof(keyword)/sizeof(keyword[0]);//sizeof(keyword);        printf("there are %d items in this array.\r\n", size);        for(i = 0; i < size; i++)        {                printf("sizeof(keyword[%d]) = %d\r\n", i, sizeof(keyword[i]));                printf("strlen(keyword[%d]) = %d -> %s\r\n", i, strlen(keyword[i]), keyword[i]);        }        return 0;}
[解决办法]
C/C++ code

#include <string.h>#include <stdio.h>int main(int argc, char **argv){        char const *keyword[]={          "do",          "for",          "if",          "register",          "return",          "switch",          "while"        };        int i, size;        size = sizeof(keyword)/sizeof(keyword[0]);//sizeof(keyword);        printf("there are %d items in this array.\r\n", size);        for(i = 0; i < size; i++)        {                printf("sizeof(keyword[%d]) = %d\r\n", i, sizeof(keyword[i]));                printf("strlen(keyword[%d]) = %d -> %s\r\n", i, strlen(keyword[i]), keyword[i]);        }        return 0;}
[解决办法]
[code=C/C++]
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
char const *keyword[]={
"do ",
"for ",
"if ",
"register ",
"return ",
"switch ",
"while "
};

int i, size;

size = sizeof(keyword)/sizeof(keyword[0]);//sizeof(keyword);
printf( "there are %d items in this array.\r\n ", size);
for(i = 0; i < size; i++)
{
printf( "sizeof(keyword[%d]) = %d\r\n ", i, sizeof(keyword[i]));
printf( "strlen(keyword[%d]) = %d -> %s\r\n ", i, strlen(keyword[i]), keyword[i]);
}
return 0;
}
[/code]


$ ./app_sizeof
there are 7 items in this array.
sizeof(keyword[0]) = 4
strlen(keyword[0]) = 2 -> do
sizeof(keyword[1]) = 4
strlen(keyword[1]) = 3 -> for
sizeof(keyword[2]) = 4
strlen(keyword[2]) = 2 -> if
sizeof(keyword[3]) = 4
strlen(keyword[3]) = 8 -> register
sizeof(keyword[4]) = 4
strlen(keyword[4]) = 6 -> return
sizeof(keyword[5]) = 4
strlen(keyword[5]) = 6 -> switch
sizeof(keyword[6]) = 4
strlen(keyword[6]) = 5 -> while


求sizeof(keyword)/sizeof(keyword[0]))
==》 代表数组里面有几个元素。sizeof(keyword) 数组大小, sizeof(keyword[0]) 元素大小。 关于元素大小和每个元素指向的字符串大小请见上面结果。
[解决办法]
我是来接分的。。
[解决办法]
我刚才回复的,怎么没有出来。

热点排行
Bad Request.