c语言指针运算(C语言指针运算问题)

本文目录
- C语言指针运算问题
- c语言中 “*”运算符的作用是 所谓“指针”就是
- c语言中指针加减问题,求解答
- C语言中int * p;的含义
- c语言中指针运算符*和自增运算符++的优先级
- c语言 指针运算符和指针说明符有什么区别
- C语言指针运算问题(问题一)*p++和(*p)++(问题二)a[i][j]=*(a[i]+j)=*(*(a+i)+j)
- c语言中指针*p++为什么和*(p++)等价
- c语言中指针可不可以用在自增自减运算符中
- c语言中的指针是什么
C语言指针运算问题
错,*q++和*(q++)是一样的,前置的自增运算符是变量先加1再把新的值用在出现该变量的表达式中,后置的自增运算符是把变量当前值用在出现该变量的表达式中,然后再把变量加1。对于*(q++)来说是一个完整的表达式,先计算完毕后,q才自加1。与前一个表达式是一样的。
c语言中 “*”运算符的作用是 所谓“指针”就是
用作乘法,为百双目运算符,形式为a*b, 就是计算数学中的度a乘以b。用作取值运算,为单目运知算符,根据后续操作数(必须为指针)类型,取其指向的值。道
所谓的指针,本质上就是地址。 指针变量的值,就是地址的值,当取值运算时内就是到对应的内存地址上,依照指针类型进容行取值。
运算所需变量为一个的运算符叫单目运算符,例如【!,~,()】 。
运算所需变量为三个的运算符叫三目运算符:【?:】
扩展资料:
双目运算符
初等运算符 下标运算符【】、分量运算符的指向结构体成员运算符【-》】、结构体成员运算符【.】
算术运算符
乘法运算符【*】、除法运算符【/】、取余运算符【%】 、加法运算符【+】、减法运算符【-】
关系运算符
等于运算符【==】、不等于运算符【!=】 、关系运算符【《 》 《= 》= 】
逻辑运算符
逻辑与运算符【&&】 、逻辑或运算符【||】
c语言中指针加减问题,求解答
嗯,没错,对指针的加减运算是以步长为单位的,不过这是对编译器来讲的。但是对于机器来讲,指针也是二进制数据,在机器内对它们进行运算和一般的数据是一样的,只是因为编译器知道它们是指针,所以编译器告诉你的是指针之间的步长。以下是一个测试的程序,应该能说明问题吧,仅供参考:
#include《stdio.h》
#include《stdlib.h》
void
main()
{
float
a,*p,*q;
p=&a;
q=&a;
printf("p:
0x%0xd\n",
p);
printf("q:
0x%0xd\n",
q);
printf("p-q:
%d\n",
p-q);
printf("p+3-p:
%d\n",
p+3-p);
system("pause");
}
C语言中int * p;的含义
在c语言中
*
是指针运算符。
*p表示指针变量p所指向的变量的值。即p中存储的内存地址
所存储的变量的值。
另外
容易混淆的地方是;
定义一个指针变量p时,如
int
*p;
表示定义了一个指向整型变量的指针变量p。
望采纳。
c语言中指针运算符*和自增运算符++的优先级
运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,乘除运算符具有比加减运算符更高的优先级。
例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。
结合性是指具有相同优先级的操作符的运算顺序,从左至右运算称为左结合,从右至左运算称为右结合。
自增(++)和自减(--)操作符为对象加1或减1操作提供了方便简短的实现方式。它们有前置和后置两种使用形式。到目前为止,我们已经使用过前自增操作,该操作使其操作数加1,操作结果是修改后的值。
C语言运算符是说明特定操作的符号,它是构造C语言表达式的工具。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。
扩展资料
运算符优先级
1、函数计算优先。
2、其次是强制类型转换。
3、自增、自减和取反次之。
4、先乘除再加减。
5、有括号先算括号内的。
6、表达式中出现连续两个运算符时最好用空格隔开,如a+++b要写成:a++ +b或a+ ++b。同一优先级的运算符,运算次序由结合方向所决定。
c语言 指针运算符和指针说明符有什么区别
指针运算符和指针说明符 外形上一样,都是 * 号, 一个用在 语句里,一个用在声明里。
例如:
int *p; 声明 p 是指针,它可用来指向一个 整形变量。
int (*pf)(); 声明pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。
int *ap(int x,int y){...} 声明 函数 ap, 有2个形参,函数调用会返回 一个指针,用来指向一个 整形变量。
指针运算符,也在其操作数的左边,该操作数是一地址,用*可取得该地址处存储的变量的值,可做右值,也可做左值。例如:
int myAge;
int *p; //指针说明符
*(&myAge)=24; // 指针运算符,&myAge 是地址,* 是取那个地址里的值的运算,做左值
printf("%d",myAge);
p=&myAge
printf(" %d",*p+1); //指针运算符, 输出 指针指向的变量的值加1,做右值。
输出 24 25
C语言指针运算问题(问题一)*p++和(*p)++(问题二)a[i][j]=*(a[i]+j)=*(*(a+i)+j)
这都是C的基本概念了,要理解这个你必须先理解C的表达式的概念。表达式是有自己的值的,而且表达式的值也是有类型的。比如有int型变量i,那么
i=5
这个赋值表达式也是有值的,他的值是5,类型是int。所有的混合表达式,都是用低级表达式的值参与更高级的表达式的运算,所以
*p++
等同于
*(p++)
先执行p++
表达式,然后用p++
表达式的值来参与*
表达式运算。那么p++表达式的值是什么?对了,是自加之前的p的值,这个值的类型是什么?是跟p相同类型的指针,所以对这个值进行取值操作,取出的是p自加之前的指针指向的内容。
第二个问题更简单了。a
是二维数组,相当于a是一个指向指针的指针,或者说a
就是指向二维数组的第i行这个一维数组首地址的指针,所以
a+j
就是指向第i行第j个元素的指针。
c语言中指针*p++为什么和*(p++)等价
p++ 是后缀加加,C/C++规定,后缀加加,在当前表达式中 不自增1,而用原来的值,出了表达式后再自增 1.
不同于前缀加加。前缀加加 ++p 的话,先增1,然后用于表达式,出了表达式就不再自增。
所以,x= *(p++) 就等于 x=*(p); 或 x=*p; 执行完毕后 再 做 p=p+1.
x= *p++ 里是 后缀加加, 当前表达式中 不自增1, 所以它就等价于 *p.
c语言中指针可不可以用在自增自减运算符中
可以使用。
对于TYPE *类型的p,可以使用p++或p--来实现p移动位置,指向下一个或上一个元素的效果。
在C语言中,指针的本质为地址,所以当TYPE*类型的指针在进行++或--运算时,其指向的地址值,会实际增加或减少TYPE所占内存的大小。也就是说,从数值上,当p++时,值会增加sizeof(TYPE), 当p--时,值会减少sizeof(TYPE)。
c语言中的指针是什么
表示成员选择(指针),选择结构体的成员变量。
1、结构:运算符 -》 是指向结构体成员运算符,结合方向为自左向右。
2、用法:对象指针-》成员名。
举例说明如下:
扩展资料:
C语言指针的必要性。
指针解决了一些编程中基本的问题:
1、指针的使用使得不同区域的代码可以轻易的共享内存数据。当然也可以通过数据的复制达到相同的效果,但是这样往往效率不太好,因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。
但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节或者其他可能)。
2、指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。
3、有些操作必须使用指针。如操作申请的堆内存。还有:C语言中的一切函数调用中,值传递都是“按值传递”的,如果要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。
百度百科--指针

更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30





