指针表达式
int ch = 100;
int *cp = &ch;
printf("cp = %d", *cp)
程序会返回ch的值。
char ch = 'a';
char *cp = &ch;
printf("cp = %s", *cp)
此处代码非法,表达式&ch求值时,它会存储于某个地方,但你无从得知,它的存储位置没有明晰的界定,所以它不是一个合法的左值。
char ch = 'a';
char *cp = &ch;
++*cp;#非法, 从右向左结合性
(*cp)++;#正确, cp所指向的值加一
++*++cp;#cp指向位置加1再取里面的值之后在加1
先执行间接访问操作,在执行++操作
cp地址加1后取出其中的值,对值在进行加1操作
++操作符在指针中要加入括号
指针运算
1.一个指针和一个整数进行算术运算,整数在执行加法运算前会根据“合适的
大小”进行调整,就是把整数值和指针所指类型大小相乘。
举个例子,
char型 p+2
p的大小为1 p+2加到指针的值为2
2.指针算术运算的两种习形式:
指针 ± 整数
指针 - 指针 其为有符号整型:ptrdiff_t类型,结果是以数组元素的长度为单位。仅在两个指针指向同一数组时候合法。
3. 数组指针指向第一个元素前面的位置是非法的,但是指向会后一个元素后面的一个位置是合法的。
指针的错误使用
- 对一个未初始化的指针进行解引用
- 对一个NULL指针进行解引用
- 向函数传递NULL指针
- 指针越界而未检测到,造成不可预料的错误
- 对一个数组进行减法运算,非法的指向了数组第一个元素前面的内存位置
标签:ch,指向,++,char,cp,小记,指针 来源: https://blog.csdn.net/the_best_one1/article/details/122613727
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。