发新帖

C语言指针赋值 C/C++

linmao 2019-5-19 16:07:03 453

今天敲代码发现一个bug,纠结了一会,然后发现是自己指针赋值没有搞清楚:

int* a = 10;
// 我本来是想给定义一个整型指针变量并给所指变量赋值10,但是发现对
// 并且这样声明以后,系统直接把上面定义等同于下面的定义
int a = 10;

C语言指针变量初始化一般只有四种情况:

1. 通过地址运算符&赋值

2. 通过指针变量初始化赋值 int a, *p = &a; 这句句当于int a, *p; p = &a; 这种基本归为第一类。

3. 赋值NULL

最新回复 (3)
全部楼主
  • 很奇怪的是不知道为什么int* a = 10的这种赋值方法不是把10这个值赋给指针变量,而是直接等价成了int  a = 10,这一点很奇怪!
    2019-5-19 16:13:19 回复
  • 好像没有什么问题,因为我测试的时候是:int *a = 10; int c = a; 然后输出c的值是10,所以可能是long型的指针类型转换成int付给a,然后值为10。
    2019-5-19 16:27:13 回复
  • 觉得3楼的说话有点不太科学,现在想着可能是编译器自己做了优化。
    2019-10-1 17:20:38 回复
返回