标题:
C语言指针的一点小疑问
[打印本页]
作者:
254zhang
时间:
2019-12-30 11:17
标题:
C语言指针的一点小疑问
1.
int b=5;
int *a = &b;
2.
int b = 5;
int* a =&b;
3.
int b = 5 ,*a;
a = &b;
这三种写法有区别吗
是不是都是把b的地址赋给指针变量a
如果一样的话 哪种写法比较好
作者:
254zhang
时间:
2019-12-30 11:59
还有一个问题
int *a = &b; (这是把b的地址赋给指针变量a)
和 *a = &b; (这是把b的地址赋给指针变量a的存储的数据)
为什么含义不一样呢?
作者:
zsm15431078
时间:
2019-12-30 15:25
发表下个人看法,针对第一个问题:
1.以上三个写法是一样的。个人比较倾向于第三种写法。先定义变量,然后赋值。
2. int *a = &b;是定义一个指针变量a,同时初始化。
*a = &b是一个赋值语句,所以含义不同。
作者:
艽野尘梦
时间:
2019-12-30 15:38
三者在运行编译时的效果是一致的,含义也大致相同
作者:
艽野尘梦
时间:
2019-12-30 15:41
三者运行编译的效果一样,1和2只是空格格式不同,3是先定义再赋值,最终效果是一样的,个人喜欢第一种,定义和赋值在一起,少打一行,而且可以防止后面忘记赋值
作者:
liuyongjun000a
时间:
2019-12-30 18:09
实际上你自己全懂了。这个书写格式,只有软件本身认可,试了就知了。没有文章说明中间空格就不是一个定义词来的。如* A,或:= some;前者就是:*A,空了也是*A,等于后面的空好几个也是一个some.
作者:
啦啦啦123321
时间:
2019-12-30 21:47
一个意思吧,第一种更好一点
作者:
jizhongbiao
时间:
2019-12-31 16:15
结果一样,第一种和第二种完全一样。个人决定第三种写法比较好。
作者:
1332112623
时间:
2020-1-1 18:05
都一样,我觉得第一种好点
作者:
w1179benp
时间:
2020-1-3 08:38
这个看个人习惯,以及代码作用——是否有他人需要,选个通俗易懂的就OK
作者:
jaken_tony
时间:
2020-1-3 09:51
三个写法都一样,一般做法是第一种,特别是在一行中定义多个变量时,简单明了,能有效区分哪些是数据变量,哪些是指针变量。至于说补充的问题,如果是单独一行来写,前面没有变量类型限定符 则*a将会被编译器认为是一个整体,表示a指针指向的int变量,也是常规的指针用法,但是你这样写的话,如果a指针没有初始化,会导致程序出现无法预测的问题,即野指针问题。
作者:
御羽
时间:
2020-1-3 17:21
结果完全一样。个人决定第三种写法比较好。先定义变量,然后赋值。清晰明了
作者:
lllxy
时间:
2020-1-3 18:51
三种写法都一样,都是把b的地址赋给指针变量a,一般是写作第一种
作者:
还有谁?
时间:
2020-1-3 19:29
书写规范的代码让人看了赏心悦目,代码的可读性强。书写规范的代码无论对自己对别人都有好处。
作者:
Abc_zh
时间:
2020-1-3 20:24
除了第三种,我不是很赞同这样的写法以外,第1 、2 种写法都可以。这是因为第三种会存在野指针的问题,虽然在你的编译器当中会编译通过,但是可能会导致出现不可预测的错误,毕竟你在定义*a的时候并没有初始化给它,但是在内存中会划分了某个区域给它,而这个区域的话,有可能存放着其他的数据,可能会导致一系列不可预测的错误发生。或者你在定义*a时直接赋值为空,即 int * a = NULL;然后再进行下一步操作,如:a = &b;
作者:
ddddddd1wu
时间:
2020-1-3 22:06
则三种写法是一样的,但是至于哪种比较好,各有各的道理。个人建议*号跟随变量,比如(int *a)并且同时初始化,以免忘记,造成悬空指针。
作者:
没耐心
时间:
2020-1-4 10:42
254zhang 发表于 2019-12-30 11:59
还有一个问题
int *a = &b; (这是把b的地址赋给指针变量a)
首先,3中实现的是一样的,但是第三种不太严谨,在定义的同时没有初始化,会出现野指针。他们都是实现了把b的地址放入a中,也就是指针a指向b的地址。第二个问题,第一个是定义一个指针同时初始化,第二个是把b的地址的数值放入a指向的空间中,不是b的值。
作者:
瑜乔
时间:
2020-1-4 12:17
一样的,看个人习惯,以及行业习惯
作者:
流星2019
时间:
2020-1-4 15:47
指针就是指向地址的意思,在指针运算的过程中是在对地址进行操作,你明白这个就清楚了
作者:
lsc124
时间:
2020-1-4 16:27
三种写法没有实际上的区别,但是我个人比较喜欢第一种写法,很多c语言的书上也是第一种写法
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1