求指导关于C的指针的知识

pqiankui 发布于 2013/09/06 20:19
阅读 238
收藏 0

求高手解释下在C语言里面的指针的概念里,以下三种情况有啥区别?

1)


void *opt;
2)


void* opt;
3)

int * opt;

加载中
0
小耶果
小耶果

1.void* opt;//表明以空指针类型定义一个变量
2.void *opt;//表明一个空类型定义一个指针变量
从汇编上来看,二种声明法从技术上没有区别.C++老爹推荐第一种,但标准委员为推荐第二种.我个人喜欢第一种声明和定义的形式.但是遇到void* a,b 操蛋的是b并不是void* b.还得void* a,*b.所以从语法上来看C更偏向第二种.
至于void * a,一般CStyle格式化工具会去掉其中一个空格.不去除C也不会报错,自动转换成第二种形式.

0
中山野鬼
中山野鬼

前面两种没区别。

存储方面:三种的存储没区别。

指向空间方面:最后一种和前面两种的区别是,存储的内容所指向的空间,最后一种为32位宽度,前面两种位8位宽度。

指向空间的数据类型判定方面:最后一种判定为有符号32位整型。前两种无法判定类型,也即直接取用(计算比较类操作)非法。哈。

中山野鬼
中山野鬼
回复 @pqiankui : 你确定你问的是个问题吗?哈。
pqiankui
pqiankui
确定前面两种写法没啥一丁点的区别?
0
中山野鬼
中山野鬼

引用来自“小耶果”的答案

1.void* opt;//表明以空指针类型定义一个变量
2.void *opt;//表明一个空类型定义一个指针变量
从汇编上来看,二种声明法从技术上没有区别.C++老爹推荐第一种,但标准委员为推荐第二种.我个人喜欢第一种声明和定义的形式.但是遇到void* a,b 操蛋的是b并不是void* b.还得void* a,*b.所以从语法上来看C更偏向第二种.
至于void * a,一般CStyle格式化工具会去掉其中一个空格.不去除C也不会报错,自动转换成第二种形式.

从后面的语法编译上来看,也没有区别。哈。。
0
小耶果
小耶果

引用来自“中山野鬼”的答案

引用来自“小耶果”的答案

1.void* opt;//表明以空指针类型定义一个变量
2.void *opt;//表明一个空类型定义一个指针变量
从汇编上来看,二种声明法从技术上没有区别.C++老爹推荐第一种,但标准委员为推荐第二种.我个人喜欢第一种声明和定义的形式.但是遇到void* a,b 操蛋的是b并不是void* b.还得void* a,*b.所以从语法上来看C更偏向第二种.
至于void * a,一般CStyle格式化工具会去掉其中一个空格.不去除C也不会报错,自动转换成第二种形式.

从后面的语法编译上来看,也没有区别。哈。。
属于代码风格问题
0
中山野鬼
中山野鬼

引用来自“小耶果”的答案

引用来自“中山野鬼”的答案

引用来自“小耶果”的答案

1.void* opt;//表明以空指针类型定义一个变量
2.void *opt;//表明一个空类型定义一个指针变量
从汇编上来看,二种声明法从技术上没有区别.C++老爹推荐第一种,但标准委员为推荐第二种.我个人喜欢第一种声明和定义的形式.但是遇到void* a,b 操蛋的是b并不是void* b.还得void* a,*b.所以从语法上来看C更偏向第二种.
至于void * a,一般CStyle格式化工具会去掉其中一个空格.不去除C也不会报错,自动转换成第二种形式.

从后面的语法编译上来看,也没有区别。哈。。
属于代码风格问题
我倒。。。。。这次真的输了。。。喷血,腿抽筋中。。。
0
一一无念
一一无念

引用来自“中山野鬼”的答案

引用来自“小耶果”的答案

引用来自“中山野鬼”的答案

引用来自“小耶果”的答案

1.void* opt;//表明以空指针类型定义一个变量
2.void *opt;//表明一个空类型定义一个指针变量
从汇编上来看,二种声明法从技术上没有区别.C++老爹推荐第一种,但标准委员为推荐第二种.我个人喜欢第一种声明和定义的形式.但是遇到void* a,b 操蛋的是b并不是void* b.还得void* a,*b.所以从语法上来看C更偏向第二种.
至于void * a,一般CStyle格式化工具会去掉其中一个空格.不去除C也不会报错,自动转换成第二种形式.

从后面的语法编译上来看,也没有区别。哈。。
属于代码风格问题
我倒。。。。。这次真的输了。。。喷血,腿抽筋中。。。
你认真了
0
乌龟壳
乌龟壳

12没区别

3数据类型不一样,无论内存怎么存,int肯定有int的运算方式。

0
杨同学
杨同学
1跟2没有区别
0
修改登录密码
修改登录密码

void*opt; 通常用来指向一些目标类型不定的地址,可以是字节 word  结构体,实际使用中通常要强制类型转换。 如果单纯写opt++会导致编译器犯晕

int  * opt  目标类型已经很确定。opt++的含义非常精确

返回顶部
顶部