【C语言】指针变量初始化|赋值语句的方法|指针变量的大小

举报
謓泽 发表于 2023/09/28 19:57:55 2023/09/28
【摘要】 【C语言】指针变量初始化|赋值语句的方法|指针变量的大小

💣指针变量初始化 

指针变量初始化是非常重要的,很多初学指针的小伙伴们很容易就会把指针没有进行指针变量的初始化。

如下代码所示↓

#include<stdio.h>
int main(void)
{
    int a = 10; 
    int *p = &a;
    printf("*p = %d\n",p);
    return 0;
}

🔥注意→上述代码是错误的,在打印printf的时候,p并没有对其进行解引用操作(找不到p的数值) 此时p是找不到a的地址的,也可以说并没有指向&a。

如下代码所示↓

#include<stdio.h>
int main(void)
{
    int a = 10; 
    int *p = &a;
    printf("*p = %d\n",*p);
    return 0;
}

此时,对其中打印 printf 进行解引用操作找到 a 的地址。运行结果为:*p = 10 

🔥注意→在使用指针的时候,是必须要给指针变量进行初始化的,不然就会是野指针。关于野指针是什么这个在后面会说的。  


💣赋值语句的方法

如下代码所示↓

int a;
int *p;
p= &a; 

不允许把一个数赋予指针变量,故下面的赋值是错误的。

int * p;
p = 10;

被赋值的指针变量前不能再加“*”说明符,如写为 *p=&a 也是错误的。

另外,指针变量和一般变量一样,存放在它们之中的值是可以改变的,也就是说可以改变它们的指向。


🗡指针变量的大小

如下代码所示

#include<stdio.h>
int main(void)
{
    printf("%d\n", sizeof(int *));
	printf("%d\n", sizeof(long *));
	printf("%d\n", sizeof(long long*));
	printf("%d\n", sizeof(float *));
	printf("%d\n", sizeof(double *));
	printf("%d\n", sizeof(short *));
	return 0;
}

运行结果🖊

④(全部)

从上述结果可以看出指针变量都是④个字节

为什么不同类型的变量的地址所占的字节数都是一样的呢

原因是:他们数据类型都是指针类型,切记(☆-v-)

🔥注意→这个是在32位的操作系统 = 4字节,64位的操作系统上 = 8字节

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。