`
splayx
  • 浏览: 83030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sizeof和数组类型

    博客分类:
  • C++
 
阅读更多

sizeof(类型)可以得到一个类型的大小,

比较容易搞错的是把数组类型看成指针类型,见下面的代码:

 

#include <stdio.h>

// error: cannot convert
// ‘char*’ to ‘int*’ for argument ‘1’ to ‘void fun(int*)’
// 可见a被看成指针,而不是一个数组类型
// 所以这里怎么都是打印出指针类型的大小
// void fun(int a[10]) {
//    printf("%d\n", sizeof(a));
// }

void fun(char a[10]) {
    printf("%d\n", sizeof(a));
}

// run in 64bit machine

int main() {
    char *a = "1234567890";
    char b[100] = "1234567890";
    char c[10] = "123";

    // incompatible types in assignment of ‘char [100]’ to ‘char [10]’
    // array type has 2 attr: type(e.g. char), size(e.g. 100)
    // c = b;

    char d[100];
    // error: ISO C++ forbids assignment of arrays
    // d = b;

    // print 100
    // 打印出数组类型(char [100])的大小
    printf("%d\n", sizeof(b));

    // print 8
    fun(a);

    // print 8
    fun(b);

    return 0;
}

 

分享到:
评论

相关推荐

    指针数组和数组指针的区别.doc

    指针数组和数组指针的区别 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型...

    基础电子中的如何计算结构体的大小

    作者:曾宏安,华清远见嵌入式学院高级讲师。    运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof...和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体

    程序员面试宝典-第三版(高清带目录)

     7.4 指针数组和数组指针  7.5 迷途指针  7.6 指针和句柄  第8章 循环、递归与概率  8.1 递归基础知识  8.2 典型递归问题  8.3 循环与数组问题  8.4 螺旋队列问题  8.5 概率  第9章 STL模板与容器  9.1 ...

    C学习深入学习总结

    C语言各种常用关键字详细解释学习,都是总结面试,都是比较好的笔试题。...16 指针数组和数组指针的区别? 30 16.1 指针的声明 30 16.1.1 一维数组 31 16.1.2 多维数组 32 16.1.3 指针数组 33 16.1.4 指针的指针 33

    Objective-C2.0程序设计

    13.2.3 函数、方法和数组 13.3 结构 13.3.1 结构的初始化 13.3.2 结构数组 13.3.3 结构中的结构 13.3.4 关于结构的补充细节 13.3.5 不要忘记面向对象编程思想 13.4 指针 13.4.1 指针和结构 13.4.2 指针、方法和函数 ...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     12.2.1 new和数组 423  12.2.2 allocator类 427  12.3 使用标准库:文本查询程序 430  12.3.1 文本查询程序设计 430  12.3.2 文本查询程序类的定义 432  小结 436  术语表 436  第Ⅲ部分 类设计者的工具 ...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     12.2.1 new和数组 423  12.2.2 allocator类 427  12.3 使用标准库:文本查询程序 430  12.3.1 文本查询程序设计 430  12.3.2 文本查询程序类的定义 432  小结 436  术语表 436  第Ⅲ部分 类设计者的工具 ...

    《你必须知道的495个C语言问题》

    1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n = 5; int a[n]; 10 1.20 const char *p、char const *p和char *const p有什么区别? 10 复杂的声明 11 1.21 怎样建立和理解非常复杂的...

    你必须知道的495个C语言问题

    1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n = 5; int a[n]; 10 1.20 const char *p、char const *p和char *const p有什么区别? 10 复杂的声明 11 1.21 怎样建立和理解非常复杂的...

    你必须知道的495个C语言问题.pdf

    1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n=5; int a[n]; 1.20 const char *p、char const *p和char *const p有什么区别? 复杂的声明 1.21 怎样建立和理解非常复杂的声明?例如定义...

    明解C语言(第3版)入门篇.[日]柴田望洋(带详细书签).pdf 【半高清】

    7-1 基本数据类型和数 190 算数类型和基本数据类型 190 基数 191 基数转换 192 7-2 整型和字符型 195 整型和字符型 195 头文件 196 字符型 199 位和CHAR_BIT 200 sizeof运算符 200 size_t型和typedef声明...

    C语言进阶-牟海军.pdf

     堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组和数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比...

    C语言进阶 作者 Wrestle.Wu

     堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组和数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比...

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    4.2.7指针和数组 4.3 动态内存分配 4.3.1 堆的别名——自由存储器 4.3.2 new和delete运算符 4.3.3 为数组动态分配内存 4.3.4 多维数组的动态分配 4.4 使用引用 4.4.1 引用的概念 4.4.2 声明并初始化引用 4.5 C++/CLI...

    Visual C++ 2005入门经典.part04.rar (整理并添加所有书签)

    4.2.7指针和数组 4.3 动态内存分配 4.3.1 堆的别名——自由存储器 4.3.2 new和delete运算符 4.3.3 为数组动态分配内存 4.3.4 多维数组的动态分配 4.4 使用引用 4.4.1 引用的概念 4.4.2 声明并初始化引用 4.5 C++/CLI...

    现代C++程序设计

    6.2.2 使用for循环和数组来实现的电话账单程序 6.2.3 数组的声明和初始化 6.2.4 数组越界==严重的问题 6.2.5 vector与数组的比较 6.3 数组和函数 6.3.1 每个数组都有一个指针 6.3.2 数组指针 6.3.3 向函数传递数组...

Global site tag (gtag.js) - Google Analytics