我开始阅读指针,同时修补它们.我偶然发现了这个:
#include<stdio.h>
int main()
{
int *p,a;
a=sizeof(*p);
printf("%d",a);
}
Run Code Online (Sandbox Code Playgroud)
它输出:4
然后在sizeof(*p)我用它取代它的地方sizeof(int*) 输出8.
P是整数类型的指针,int*也是同一个东西(我的假设是正确的吗?).那么为什么它会打印两个不同的值.我在64位gcc编译器上这样做.
Lun*_*din 13
每个初学者总是会对指针声明与取消引用指针混淆,因为语法看起来是一样的.
int *p;表示"声明指向int的指针".您也可以将其写成int* p;(相同的含义,个人偏好).*p,当在声明中的任何地方使用时,意味着"取p点的内容".因此sizeof(*p)意味着"给我p指向的内容的大小",但sizeof(int*)意思是"给我指针类型本身的大小".在你的机器上,int显然是4个字节,但指针是8个字节(典型的64位机器).
*p和int*不一样的东西!第一个是解除引用的指针(即int宽度为4个字节),第二个是指针(在你的情况下是8字节宽,因为它是64位机器).
| 归档时间: |
|
| 查看次数: |
8881 次 |
| 最近记录: |