啊涂涂 发表于 2018-9-30 13:26:19

指针基本概念问题

1. int *p    和      int* p的概念一样吗?如果一样的话为什么这个 * 号要挨着变量名字,而不是紧挨着类型呢?

2. #include <stdio.h>

int main()
{
      int a = 0x1234;
      char *b = (char *)&a;
这里要把 a 的地址转换成字符类型的地址,为什么要用(char *)呢?这个不是字符型指针的意思嘛

无敌太刀 发表于 2018-9-30 13:47:41

1.一样,挨着变量名是习惯做法,挨着类型名也没有错误,编译器会自动忽略无用的空格。
2.char *是字符型指针类型,(char *)是强制类型转换,将a的数值转化为字符型地址然后赋给b指针。

啊涂涂 发表于 2018-9-30 14:39:18

Krant5 发表于 2018-9-30 14:22
1. 定义的时候* 贴近类型或者变量名都无所谓,你可以写在中间呀 int * p;
2. 这叫强制转换,没什么为什么...

就是这样写强制转换的话我理解,(char*)&a 这样我就不理解了

(char*)&a 翻译成中文,应该怎么理解呢

啊涂涂 发表于 2018-9-30 14:55:05

Krant5 发表于 2018-9-30 14:43
what?取a的地址赋值给char* 变量b, 简单来说就是 char* b 指向了变量a啊
int a = 31231;int *p = (i ...

这个(int*)或者(char*)这到底是什么意思,看见就迷

啊涂涂 发表于 2018-9-30 14:57:39

Krant5 发表于 2018-9-30 14:43
what?取a的地址赋值给char* 变量b, 简单来说就是 char* b 指向了变量a啊
int a = 31231;int *p = (i ...

int *p = (int * )&a 翻译一下叫做 整形指针p = a的地址是整形指针类型?

啊涂涂 发表于 2018-9-30 15:17:13

Krant5 发表于 2018-9-30 15:02
一开始就说了无论是(int *) (char *) (int)都是强制转换了,如果这都不理解那还是回去把书从头看一遍把 ...

为什么对地址的强制转换就要加上*号

啊涂涂 发表于 2018-9-30 15:23:34

Krant5 发表于 2018-9-30 15:21
不加 * 号 还是指针吗?

那不是把地址转换一下格式么,为什么要加*

啊涂涂 发表于 2018-9-30 18:56:01

Krant5 发表于 2018-9-30 15:30
你懂不懂 char 和char *是什么意思??他们有什么区别??地址就是地址,跟格式有什么关系呢?你要赋值给什么 ...

呵呵,自己讲都讲不清楚像疯狗一样,真不知道你的25个最佳答案哪里来的,唉,真悲哀

Krant5 发表于 2018-10-1 01:10:10

啊涂涂 发表于 2018-9-30 18:56
呵呵,自己讲都讲不清楚像疯狗一样,真不知道你的25个最佳答案哪里来的,唉,真悲哀

几年之后你估计还是这个狗样,哎,放弃吧,ZZ

啊涂涂 发表于 2018-10-1 09:12:07

Krant5 发表于 2018-10-1 01:10
几年之后你估计还是这个狗样,哎,放弃吧,ZZ

不好意思,问题我早就解决了。拿你开开心而已,自己学成这个烂样子还教别人呢,你是真的秀~
页: [1]
查看完整版本: 指针基本概念问题