不管是什么类型的指针,相当于sizeof(char* )= 4printf("sizeof(*p) = %d\n",sizeof(*p));//*p是P所指向的那个内存空间里存储的内容,数组名所表示的是一个数组的首地址,//也可以理解成数组首元素的地址,所以*p的内存空间就是1,相当于sizeof(char) = 1printf("strlen(p) = %d\n",...
编译器编译的时候就会记住 array是一个 int类型的数组,长度为4,所以sizeof的时候会直接将这个结果计算...
”从结果可以看到,sizeof(p)其实计算的是指针变量p的类型的大小。指针p的类型是指向整数类型的指针,因此其大小为4“ 此处做如下更正: ”从结果可以看到,sizeof(p)其实计算的是指针变量p的大小。在32位系统上,不管指针p指向的是整型数据,还是字符型数据,short型数据,long型数据等,指针p本身所占的内存字节数均为...
sizeof(a)//计算的就是整个数组的长度,为40; &a,表示取出整个数组的地址,sizeof(&a)=4,sizeof(*&a)=40 其他情况,数组名a均退化为指针。 动态数组的创建和释放 (1)一维数组:int* arr =newint[n];delete[] arr; (2)二维数组:int** arr =newint*[row];for(inti =0; i < row; i++) { a...
sizeof(数组名):返回数组所有元素占有的内存空间字节数。 sizeof(指针) :返回计算机系统的地址字节数,如果是32位系统,返回4,64位系统返回8。 注:buf2是指针数组,数组的元素是指针,所以sizeof(buf2[1])返回值是4。 sizeof("XXXXX")应该是多少呢?
在C++ 中,`sizeof` 是一个运算符,用于计算数据类型或对象所占用的内存大小(以字节为单位)。对于指针和数组,`sizeof` 的作用略有不同。1. 指针:`sizeof` 用于计算指针...
sizeof(str[0]) // 1 第一个字符的大小strlen(str) // 5 返回字符串的长度,不包括结尾的反斜杠零1234512345 1. 2. 3. 3.把数组名赋值给一个指针 char *p = str;sizeof(p) //结果是4,p是指针,在32位平台上,所有的指针都只4个字节的大小。sizeof(*p)//结果是1,*p代表第一个字符的大小strlen(...
而如果对指针p求sizeof,它用于等于运行机器上的指针大小,比如在32位机器上,这个值就是4字节;而我的测试机器是64位机器,所以其值为8字节。 4 总结 sizeof求数组和指针是两个不同的操作,对数组它是求数组的整体内存大小,而对指针,其值用于等于机器的字长(即不同的机器有不同的测试结果)。
sizeof考虑的是内存空间大小,strlen考虑的是字符串长度(不计算某尾\0)。 二、sizeof(p) sizeof(*p) strlen(p) #include<stdio.h>#include<string.h>intmain(void){charstr[6]="hello";char*p=str;//str做右值代表数组首地址printf("sizeof(p)=%d.\n",sizeof(p));//测量的是指针变量本身的长度 ...
sizeof操作符 对象所占 栈内存空间的大小,单位是字节 关键词:char 数组 指针 结构体 class 【注意】 ① sizeof(NULL) 结果为1, "\n"转义字符算作1位 ② 是栈内存的大小,不是堆,也不是静态全局区 class A1{ public: int a; static int b; //静态变量存放在全局数据区域 A1(); ~A1(); }; void...