热门IT资讯网

指针4-指针的运算和指针变量占几个字节

发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,#include //2018-05-29/* 指针变量的运算 指针不能相加,不能相乘,也不能相除 如果两个指针变量指向的是同
#include //2018-05-29/*        指针变量的运算                指针不能相加,不能相乘,也不能相除                如果两个指针变量指向的是同一快连续空间中的不同存储单元                则这两个指针变量才可以相减int main(void){        int i = 5;        int j = 10;        int * p = &i;        int * q = &j;        int a[5];        p = &a[1];        q = &a[4];        printf("%d个单位\n",q-p);        return 0;}*///------------------------------------------------------/*  一个指针变量到底占几个字节        预备知识:                sizeof(数组类型)                功能:返回值就是该数据类型占的自己数                例子:                        sizeof(int) = 4                        sizeof(char) = 1                        sizeof(double)=8                                          假设p指向char类型变量(1个字节)                  假设q指向int类型变量(4个字节)                  假设p指向double类型变量(8个字节)                  p q r 本身所占字节数是否一样 答案:一样都是4                                                                  总结:                                                一个指针变量,无论它指向的变量占几个字节,该指针变量本身只占4个字节                                                                可以这样理解:p,q, r代表的都是地址,若以10进制输出则都是×××,所以是4个字节(个人想法)                                                                看下面的输出就可以知道                                        printf("%d,%d,%d\n",sizeof(p),sizeof(q),sizeof(r)); //输出4,4,4                                        printf("%d,%d,%d\n",sizeof(*p),sizeof(*q),sizeof(*r)); //输出1,4,8#include int main(void){        char ch = 'A';        int a = 12;        double b = 52.4;                char *p = &ch;        int *q = &a;        double * r = &b;        printf("%d,%d,%d\n",sizeof(p),sizeof(q),sizeof(r)); //输出4,4,4        printf("%d,%d,%d\n",sizeof(*p),sizeof(*q),sizeof(*r)); //输出1,4,8        sizeof(p);                return 0;} */





0