定义一个指针数组
int *p[100];
sizeof(p)结果为400
我一直认为sizeof(数组名)应该返回的是数组的个数100
如果定义 int **p;
sizeof(p)结果又应该怎么样呢?忽然觉得很迷糊 请大家帮着理解一下sizeof关于数组和指针的用法吧
谢谢
int *p[100];
sizeof(p)结果为400
我一直认为sizeof(数组名)应该返回的是数组的个数100
如果定义 int **p;
sizeof(p)结果又应该怎么样呢?忽然觉得很迷糊 请大家帮着理解一下sizeof关于数组和指针的用法吧
谢谢
如果你定义int **p;那么是指向指针的指针,归根结底它还是一个指针,所以指针肯定是占4个字节,所以是4.
希望没有说错,呵呵。
int **p; 指向指针的指针,占4个字节,所以 sizeof(p)=4
int test(int *p[100]) 这个函数里的你觉得是多少呢?这个时候是等于四的..糊涂了吧...是因为你基本概念不清楚.
指针占四位我了解
不明确的是sizeof(数组名)返回的是数组个数 还是实际占有的空间(bytes)int arr[100];
sizeof(arr)也应该是400?
int p[100] sizeof(p), 数组元素为int,在32位下int 也占用4byte, 所以也是4*100在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。
A. 参数为数据类型或者为一般变量。例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。例如int类型在16位系统中占2个字节,在32位系统中占4个字节。
B. 参数为数组或指针。下面举例说明.
int a[50]; //sizeof(a)=4*50=200; 求数组所占的空间大小
int *a=new int[50];// sizeof(a)=4; a为一个指针,sizeof(a)是求指针
//的大小,在32位系统中,当然是占4个字节。
C. 参数为结构或类。Sizeof应用在类和结构的处理情况是相同的。但有两点需要注意,第一、结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实例地址无关。
第二、没有成员变量的结构或类的大小为1,因为必须保证结构或类的每一个实例在内存中都有唯一的地址。
下面举例说明,
Class Test{int a;static double c};//sizeof(Test)=4.
Test *s;//sizeof(s)=4,s为一个指针。
Class test1{ };//sizeof(test1)=1;
D. 参数为其他。下面举例说明。
int func(char s[5]);
{
cout<
//数的参数在传递的时候系统处理为一个指针,所
//以sizeof(s)实际上为求指针的大小。
return 1;
}
sizeof(func(“1234”))=4//因为func的返回类型为int,所以相当于
//求sizeof(int).