sizeof与数组长度

代码:

#include <stdio.h>
#include <stdlib.h>

#define LENGTH 10

void func(int arr[]);

int main(void) {

	int arr[LENGTH] = { 0 };

	// sizeof 数组名:整个数组大小
	// sizeof 数组名[0]:数组第一个元素大小
	size_t length = sizeof arr / sizeof arr[0];

	printf(length == LENGTH ? "Equal" : "Not Equal");

	printf("\n");

	func(arr);

	return EXIT_SUCCESS;
}

void func(int arr[]) {

	// arr是一个指向int类型的指针
	printf(sizeof arr / sizeof arr[0] == LENGTH ? "Equal" : "Not Equal");

	printf("\n");
}

输出:

Equal
Not Equal
时间: 2024-12-15 19:16:42

sizeof与数组长度的相关文章

你必须知道的指针基础-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关键字返回一个类型的长度.于是,一些聪明的人就想出了用sizeof(array) / sizeof(array[0])来获取array数组的长度.这个表达式十分巧妙.第一个sizeof(array)返回array的长度,第二个sizeof(array[0])返回array每个元素的类型的长度.将数组的总长除以其中每个元素的长度,就可以得出该数组的长度. 写个小程序试一下,可行.那么,指针数组行不行呢? 咦,这次怎么失败了?用printf看一下. int类型的array[0]

sizeof() 之 数组

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

求数组长度sizeof

当数组当作参数传递时,它就退化成指针了,要求数组长度的话,可以在main函数内部求得 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> void fun(int arr[], int len) {     printf("---%d\n", sizeof(arr));     printf("---%d\n", sizeof(arr[0]));    printf("---len = %d

C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别

字符数组的长度计算:必须以终止符'\0'作为边界,但对字符数组赋值时,有两种方式: 1:定义时用字符初始化 (1)char chs[7] = {'a', 'c', '0', 'z', '3','d'}; // 长度为6 上式等价于: (2)char chs[7] = {'a', 'c', '0', 'z', '3','d', '/0'}; // 长度为6 也等价于: (3)char chs[] = {'a', 'c', '0', 'z', '3','d', '/0' }; // 长度为6 但不等

C++ 取得数组长度

C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array)  (sizeof(array) / sizeof(array[0])) . 而在C++中则可以使用模板 技术定义一个函数,比如: template <clas

C++ 数组长度 以及 数组名作为参数 传递给函数

在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度? 如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有strlen() (需要#include <string.h>) 一个办法是用 sizeof() 一.首先定义数组 int array[] = {18,10,15,7,1}; 一开始想都没想就直接在子函数里面 int array_length(int a[]){ int len = sizeof(

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

C++获取数组长度

1.获取字符数组长度 char a[]="abcdef"; int length1=sizeof(a)/sizeof(a[0]); cout<<"a"<<length1<<endl; length1为7. cout<<"a"<<strlen(a)<<endl; 输出6 注:string不能用strlen函数 2.获取字符串string长度 #include <strin