C 指针*p 与* p的学习笔记
例子:
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy8191')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy8191>#include <stdio.h>
int data[2] = {100, 200};
int moredata[2] = {300, 400};
int main(void)
{
int * p1, * p2, * p3;
p1 = p2 = data;
p3 = moredata;
printf(" *p1 = %d, *p2 = %d, *p3 = %dn", *p1, *p2, *p3);
printf(" *p1 = %d, * p2 = %d, (*p3) = %dn", *p1 , * p2, (*p3) );
printf(" *p1 = %d, *p2 = %d, *p3 = %dn", *p1, *p2, *p3);
return 0;
}
他的输出是:
*p1 = 100, *p2 = 100, *p3 = 300
*p1 = 100, * p2 = 200, (*p3) = 300
*p1 = 200, *p2 = 200, *p3 = 301
其他的相信都很明确了,那么含糊不清的其实是*p 和* p的区别在哪里了,回忆一下i 和 i的,一个是先使用,再运算,一个是先运算,再使用(见一道题搞懂i 与 i),根据优先级,*与 是一样的,他们是从右向左运算,所以先考虑 的情况,所以前者*p1了一次(使用),在运算(p1 并非*p1 ),而后者则不同。
当然,最好还是应该有括号,比较清晰* (start )
您可能感兴趣的文章:
C 指针*p 与* p的学习笔记
SQLite3数据库操作学习笔记
C语言中函数 与 指针学习笔记
Go 学习笔记 07 | 指针详解
Go语言学习笔记 --- 指针和自增自减运算及相关注意事项
C语言中变量定义/声明深入分析
Go学习笔记:接口实现与指针
C语言复习笔记之数据结构详解
Go指针和unsafe.Pointer有什么区别
Go寻找最长回文字符串——中心扩展法