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; }
相关推荐
指针数组和数组指针的区别 数组指针(也称行指针) 定义 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语言各种常用关键字详细解释学习,都是总结面试,都是比较好的笔试题。...16 指针数组和数组指针的区别? 30 16.1 指针的声明 30 16.1.1 一维数组 31 16.1.2 多维数组 32 16.1.3 指针数组 33 16.1.4 指针的指针 33
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 指针、方法和函数 ...
12.2.1 new和数组 423 12.2.2 allocator类 427 12.3 使用标准库:文本查询程序 430 12.3.1 文本查询程序设计 430 12.3.2 文本查询程序类的定义 432 小结 436 术语表 436 第Ⅲ部分 类设计者的工具 ...
12.2.1 new和数组 423 12.2.2 allocator类 427 12.3 使用标准库:文本查询程序 430 12.3.1 文本查询程序设计 430 12.3.2 文本查询程序类的定义 432 小结 436 术语表 436 第Ⅲ部分 类设计者的工具 ...
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 怎样建立和理解非常复杂的...
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 怎样建立和理解非常复杂的...
1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n=5; int a[n]; 1.20 const char *p、char const *p和char *const p有什么区别? 复杂的声明 1.21 怎样建立和理解非常复杂的声明?例如定义...
7-1 基本数据类型和数 190 算数类型和基本数据类型 190 基数 191 基数转换 192 7-2 整型和字符型 195 整型和字符型 195 头文件 196 字符型 199 位和CHAR_BIT 200 sizeof运算符 200 size_t型和typedef声明...
堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组和数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比...
堆和栈、全局变量和局部变量、生存期和作用域、内部函数和外部函数、指针变量、指针数组和数组指针、指针函数和函数指针、传址和传值、递归和嵌套、结构体和共用体、枚举、位域等较难理解的核心概念的阐述和对比...
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...
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...
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 向函数传递数组...