C++指针的长度】的更多相关文章

本文地址:http://www.cnblogs.com/archimedes/p/point-length-type.html,转载请注明源地址. 如果考虑应用程序的兼容性和可移植性,指针的长度就是一个问题,在大部分现代平台上,数据指针的长度通常是一样的,与指针类型无关,尽管C标准没有规定所有类型指针的长度相同,但是通常实际情况就是这样.但是函数指针长度可能与数据指针的长度不同. 指针的长度取决于使用的机器和编译器,例如:在现代windows上,指针是32位或是64位长 测试代码: #inclu…
这两天敲代码碰到了一个这样的问题 代码如下: #include <stdio.h> #include <stdlib.h> int main() { ; int* p=&num1; *p = ; printf("%p\n", &num1); printf("%d\n", num1); system("pause"); ; } 运行结果如下: 第二个代码 #include <stdio.h> #i…
引言:先看下面一个程序会打印出什么? #include<iostream> using namespace std; int main() { int a = 2; int *p = &a; double b = 1; double *q = &b; float c = 3; float *l = &c; char d = 's'; char *s = &d; cout << sizeof(a) << "" <&…
每台计算机都有字长,指明指针数据的标称大小----来自深入理解计算机系统 每台计算机的字长指明了它的虚拟空间大小.比如32位的机器,虚拟空间地址为0~2^w-1程序最多访问2^w个字节 对于32位程序和64位程序的区别在于如何编译. gcc -m32 编译成32位程序 gcc -m64 编译成64位程序. 对于32位程序,虚拟地址空间最大是4GB. 所以有,以后代码在不同字长的计算机运行的结果是不同的.32位是4 #include <iostream> #include <stdio.h…
该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 如果考虑到程序的可移植性和跨平台性时,指针长度就是一个问题,需要慎重处理.一般情况下,数据指针的长度时一样的,与指针类型无关,void型指针.char型指针.结构体指针等统统是一样的,函数指针的长度一般与数据指针长度不同.指针长度与CPU有关,严格意义上说与OS究竟是32位还是64位有关,同时不同的编译器分配内存时,长度也是不一样的.与指针相关的四种预定义类型如下: 一.size_t:用于安全…
#include <stdio.h> int main() { /********************************************* * * 指针的长度:不同机器可能不同,但是指针变量的长度都是一样的 * **********************************************/ ; int *pi = &a; printf("int类型指针的长度:%d\n",sizeof(pi)); ; double *pd = &am…
当我们讨论指针时,通常假设它是一种可以用 void * 指针来表示的东西,在 x86_64 平台下是 8 个字节大小.例如,下面是来自 维基百科中关于 x86_64 的文章 的摘录: Pushes and pops on the stack are always in 8-byte strides, and pointers are 8 bytes wide. 从 CPU 的角度来看,指针无非就是内存的地址,所有的内存地址在 x86_64 平台下都是由 64 位来表示,所以假设它是 8 个字节是…
指针其实就是一个变量, 和其他类型的变量一样.在32位计算机上, 指针占用四字节的变量.指针与其他变量的不同就在于它的值是一个内存地址,指向内存的另外一个地方, 指针能够直接访问内存和操作底层的数据,可以通过指针直接动态分配与释放内存. #include <stdio.h> int main(void){ int i = 1; int *p = &i;       //指针p指向了i的地址 *p += 1;          //*p将i的什增1 printf("i = %d…
对于sizeof(类或对象)这种形式,如classA1{ public: int a; static int b;A1();~A1();}sizeof计算类或对象在栈中分配的大小,类或对象的静态变量存放在全局数据域,是不会计算在内的,sizeof(A1)=4;  而int main(){ static int a=2; cout<<sizeof(a)<<endl;cout<<sizeof(a=8)<<endl;cout<<a<<end…
本章问题 1.根据下面给出的声明和数据,对每个表达式进行求值并写出它的值.在对每个表达式进行求值时使用原先给出的值(也就是说,某个表达式的结果不影响后面的表达式).假定ints数组在内存中的起始位置是100,整型值和指针的长度都是四个字节. ] = {, , , , , , , , , , ,,,,, ,,,,}; (other declarations) ; 表达式 值 表达式 值 ints   ip   ints[4]   ip[4]   ints + 4   ip+4   *ints +…