sizeof在数组或者变量中的应用

#include<stdio.h>

int main()

{

int a=4;

int arr[10]={0};

printf("%d\n",sizeof(arr));//不传参,输出数组总字节长度,结果为:40

printf("%d\n",sizeof(arr[0]));//数组第一个元素所占字节大小,结果为4

printf("%d\n",sizeof(arr[10]));// 结果为4

printf("%d\n",sizeof(&arr));//数组地址所占字节大小,结果为40,在vc环境下。

printf("%d\n",sizeof(&arr[0]));//    结果为4

printf("%d\n",sizeof(&arr[10]));//结果为4

printf("%d\n",sizeof(a));// a占的字节大小,结果为4,

printf("-----%d\n",sizeof(++a));//结果为-----4,求变量的大小可不加括号,但是求类型必须加括号

printf("+++++%d\n",sizeof(a));//结果为+++++4

return 0;

}

				
时间: 2024-08-12 19:52:16

sizeof在数组或者变量中的应用的相关文章

(变长数组)变量也可做特殊数组的长度

这个问题困扰我好久,终于完美区分: 看一个例子: main() { int n=10; int a[n]; scanf("%d",&a[2]); printf("%d",a[2]); system("pause"); } 以上例子中,n明显是一个整型的变量,虽然付了值,但是他仍然不可做为数组的大小,按理说是编译不通过的,但有些编译器,却让着个编译过了, 我们说:因为定义数组时,分配空间是需要一个固定的值,来确定你所申请的空间的大小. 若i

你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题

一.使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: int nums[] = {11,22,33,44,55,66}; int i; // sizeof(nums) 计算nums数组的总字节数 // sizeof(int) 计算int类型所占用的字节数 int length = sizeof(nums)/sizeof(int); for(i=0;i<length;i++)

sizeof() 之 数组

在平时的编程中,我们会经常用到数组,并且需要知道数组的长度,有时我们可以明确的知道数组的长度,但有时并不,这时,可以借用sizeof(),来获得数组的长度,如下: arrayLength = sizeof(array) / sizeof(array[0]); 在使用sizeof() 获得数组长度时,需要注意,如果数组array 和 sizeof() 的使用 是在同一个文件中,那么array在定义时,不需要明确数组长度:如果他们在不同的文件中时,则array在定义时必须明确长度,否则会报错 “ i

C++面试题5:建议在函数里面不要用sizeof算数组的大小

C++面试题5:建议在函数里面不要用sizeof算数组的大小 #include <iostream>using namespace::std; void foo(const int[]); int main() { int arr[3] = {1,2,3}; cout<<"in main array size: "<<sizeof(arr)/sizeof(int)<<endl; foo(arr); } void foo(const int

Java千百问_06数据结构(016)_引用类型数组在内存中如何储存

点击进入_更多_Java千百问 1.存放基本类型数组在内存中如何储存 java的数组中可以存放引用类型. 存放引用类型的内存分布相比存放基本类型相对复杂.来看一段存储基本类型的程序: 了解什么是数组看这里:java中的数组是什么 了解数组在内存中的储存看这里:java数组如何存储在内存中 public class TestPrimitiveArray { public static void main(String[] args) { //1.定义数组 int[] numbers; //2.分配

C++数组在内存中的分配

接前一篇的内容,C++中数组在内存中也有静态分配和动态分配的区别.静态数组建立的方式为:A a[],它在栈上分配空间;动态方式是使用new,malloc在堆上分配. 数组要么在静态存储区被创建(如全局数组),要么在栈或堆上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变.看下例: 1 #include<iostream> 2 using namespace std; 3 void test() 4 { 5 char ch[]="hel

【PL/SQL练习】复合变量: 可以一次传递多个值到变量中。

1.案例: 通过record类型处理一行多列的数据 复合变量--record 记录类型record:在一个变量中可以存储多个区域,每个区域可以是一个标量.记录或table (用于处理一行多列的信息) SQL> declare 2 type emp_record is record //定义变量类型为record 3 ( v_ename emp.ename%type, 4 v_sal emp.sal%type, 5 v_deptno emp.deptno%type 6 ); 7 8 emp_rcd

Bash 是如何从环境变量中导入函数的

在上文中曾说到: 所谓的环境变量的真实面目其实就是个任意字符串 Bash 在启动时会将 environ 数组中包含 = 号的字符串导入成为自己的变量 Bash 在启动外部命令时会将自己内部标记为环境变量的变量重组成字符串数组赋值给 environ 本文中继续深入讲三点: environ 数组中可能存在 = 左边名字相同的元素,也就是同名的环境变量,Bash 是怎么导入的? Bash 还可以从环境变量中导入函数,甚至同时导入两个同名的变量和函数 Bash 还可以同时导出两个同名的变量和函数 如果有

指针数组和二维数组指针变量

指针数组 概念: 一个数组的元素值为指针则是指针数组. 指针数组是一组有序的指针的集合. 指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量. 指针数组说明的一般形式为: 类型说明符 *数组名[数组长度] 其中类型说明符为指针值所指向的变量的类型. 例如: int *pa[3] 表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量. 1.用一个指针数组来指向一个二维数组. 指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向一个一维数