可能重复:
如果数组中有值,我将尝试编写一个返回1s的函数。下面是代码:
int inArrayInt(int iVal, int iArray[])
{
int i;
int arrayL = sizeof(*iArray) / sizeof(int);
int flag = 0;
for(i=0; i < arrayL; i++)
{
if(iVal == iArray[i])
{
flag = 1;
}
}
return flag;
}
问题是a
如果我写
int main()
{
int a[100] = {1,2,3,4,};
cout<<sizeof(a)/sizeof(a[0])<<endl; //a is a pointer to the first elem of array,
//isn't it
return 0;
}
我得到400块!
如果我写
void func(int *a);
int main()
{
int a[100] = {1,2,3,4,};
func(
char[]的大小为number of char times sizeof(char),char*的大小为sizeof(pointer) -指向第一个元素.
sizeof(char[])在main()中打印number of char times sizeof(char),在其中声明它,但是如果我传递这个数组来运行,它的函数将char[]转换为char*,使用sizeof()获取数组的大小是不可能的,
"void pr(char chr[])" is changed to "void pr(char chr*)"
代码示例:
using namespace st
如何在不使用sizeof的情况下获得数组中的元素数。在任何情况下,“大小”都无法得到正确的项目数,所以我想在不使用sizeof的情况下实现自我。
我尝试使用sizeof运行,但它没有在数组中打印正确的元素数。
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++){
printf("%s\n", arr[i]);
}
// to check if the noof elts in the arr is correct
printf("%d\n", n);
我试图创建一个函数来查找数组中的元素数。为此,我讨论了以下代码:
#include<iostream>
#include<stdlib>
int no_of_ele(A[]) //function to return size of array
{
return (sizeof(A)/sizeof(A[0]);
}
void main()
{
system("cls");
int arr[5] = {1,2,3,4,5};
cout<<"Number of elements in array
这两个带注释的函数返回完全相同的内存地址。那么,为什么我可以从数组变量(指向第一个元素的指针)中获得正确的大小,而不能从数组指针(数组参数)中获得大小,而这两者似乎完全没有区别(完全相同的内存地址):
#include <stdio.h>
void arraySize(int arr[]) {
printf("%p\n", arr); // same memory address
printf("%lu\n", sizeof(arr) / sizeof(arr[0])); // different result
}
int mai
可能重复:
我找不到我在这里做错了什么。我想要创建一个数组,它的大小是基于用户输入,从用户输入获取数组的数据(整数),并打印数组整数。
问题是它只打印第一个数组元素,即intArr[0]。
int main()
{
int i, n, *intArr;
printf("Type the array size:\t");
scanf("%d", &n);
intArr = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; ++i)
{
我正在学习指针,以及如何使用它们向对象发送数组(大小没有分配)。最后,我试图学习如何使用操作符重载来添加数组并将数组乘以,而不是在c++中使用“向量”。
我定义了一个名为向量的类,如下所示
class vector
{
private:
int len;
int *pvec;
}
public:
vector(int array[])
{
len = sizeof(array)/sizeof(*array);
cout<<len<<endl;
pvec = new int[len+1];
在下面的程序中,ar的数组长度在main中是正确的,但在temp中,它显示了指向ar的指针的长度,在我的计算机上是2(以sizeof(int)为单位)。
#include <stdio.h>
void temp(int ar[]) // this could also be declared as `int *ar`
{
printf("%d\n", (int) sizeof(ar)/sizeof(int));
}
int main(void)
{
int ar[]={1,2,3};
printf("%d\n", (int
这很奇怪,因为我以前做过,但它只是不起作用。我有这样一个结构xmp_frame。
typedef struct {
short int attr_dtype;
short int attr_code;
short int attr_len;
const char *attr;
}xmp_frame;
现在,我创建了一个xmp_frame数组,并使用它们如下:
xmp_frame frame_array[]={
{1,2,strlen("Hello there"),"Hello there"},
{1,3,strle
在函数中,我声明了一个数组:
int char_count_array[118] = {0};
稍后,我将这个数组传递给一个函数并计算如下:
int xx = sizeof(char_count_array);
int xy = sizeof(char_count_array)/sizeof(int);
然而,我得到的结果是: xx =4XY=1
我想我会得到: xx = 472(118 * 4) xy = 118 (472 / 4)。
有人知道我在这里做错了什么吗?
我正在尝试获取作为某个函数的参数传递的数组的长度。代码如下所示:
double getAverage(int numbers[])
{
int length = sizeof(numbers)/sizeof(numbers[0]);
// here the result of the length is 1.
int sum = 0;
for (int i = 0 ; i < length ; i++)
{
sum += numbers[i];
}
return (double)sum / length;
}
in