专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

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

发布时间:2011-06-28 16:18:37 文章来源:www.iduyao.cn 采编人员:星星草
有关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
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: