Ъγ:_小ツ雨oο 发表于 2019-2-22 23:28:01

sizeof指针数组长度问题

#include <stdio.h>

int main(void){
       
        char *p = {"aaa","bbb","ccc","ddd","eee"};
        int i;
       
        for(i = 0; i < 5; i++){
                printf("%d\n",sizeof(p) );
        }
        return 0;
}

打印出来都是8, 不太清楚8是那里来的,应该是 3或4才对,

萌新求助{:10_254:}

Croper 发表于 2019-2-22 23:59:53

p的类型是char*,
char*是一个指针!
char*是一个指针!
char*是一个指针!
既然是指针,那么在32位下长度就为4,64位下长度就为8

发撒旦法 发表于 2019-2-23 16:21:59

指针数组存的都是地址啊,长度操作系统决定的{:10_257:}
如果是想判断里面的字符串的长度的话,还是用strlen()好了
加油咯{:10_256:}

910201513 发表于 2019-2-24 12:52:51

sizeof是运算符:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度)。
strlen是函数:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
页: [1]
查看完整版本: sizeof指针数组长度问题