char str[]="hello"; sizeof(str)是多少?

来源:互联网 发布:英语四级语法软件 编辑:程序博客网 时间:2024/05/22 11:56

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char **argv){char str[] = "Hello, World.";char sta[20] = "Hello";char *p    = str;char abc   = 'c';int  ia = 4;int  ic[10];/* 每个数组成员的大小是1,当然不要忘了后面还有一个结束符 '\0' */printf("str[]   14: %d\n", sizeof(str) );/* 固定数组长度,大小为数组长度值 */printf("sta[20] 20: %d\n", sizeof(sta) );/* 指针为地址,地址的长度和32位还是64位系统有关,32位系统为4, 64位系统值为8 */printf("*p    8: %d\n", sizeof(p) );/* 好理解,就是字符的大小 */printf("abc   1: %d\n", sizeof(abc) );/* int 占用4个字节 */printf("ia    4: %d\n", sizeof(ia) );/* 原理同字符数组 */printf("ic   40: %d\n", sizeof(ic) );return 0;}


运行结果如下

1) 64为ubuntu编译运行

str[]      14: 14
sta[20] 20: 20
*p           8: 8
abc 1: 1
ia    4: 4
ic   40: 40


(2) 32位arm编译运行

str[]      14: 14
sta[20] 20: 20
*p    8: 4
abc   1: 1
ia      4: 4
ic    40: 40


1 0