*p++,(*p)++,*++p,++*p有什么不同??

如题能说具体点吗 再举点例子 谢谢
2024-11-06 14:27:22
推荐回答(5个)
回答1:

图为四种操作以及简单的赋值操作后的结果

声明p q为int*指针

可知:

图中第一个操作先将*q赋值给*p然后q指针后移4字节

第二个操作q先后移4字节后取那4个内存单元的整形值赋予p

第三个操作为先把*q赋予*p后,然后*q的值自增1

第四个为*q先自增1后,再把值赋给*p

回答2:

*(p++) 取(p+1)处地址的值。

*(++p) 取(p+1)处地址的值。和上面一样。

*++p 取(p+1)处地址的值。和上面一样。

*p++ 唯一不同的一个,先取p地址处的值,再对p执行+1。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

特点:

1、C语言是一个有结构化程序设计、具有变量作用域以及递归功能的过程式语言。

2、C语言传递参数均是以值传递,另外也可以传递指针。

3、不同的变量类型可以用结构体组合在一起。

4、只有32个保留字,使变量、函数命名有更多弹性。

5、部份的变量类型可以转换,例如整型和字符型变量。

6、通过指针,C语言可以容易的对存储器进行低级控制。

7、预编译处理让C语言的编译更具有弹性。

回答3:

例如

int a[5]={1,2,3,4,5};
int *p = a;

*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;

cout << *p++; // 结果为 1

cout <<(*p++); // 1

(*p)++ 先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2
cout << (*p)++; // 1
cout <<((*p)++) //2
*++p 先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值

cout << *++p; // 2
cout <<(*++p) //2

++*p 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)
cout <<++*p; // 2
cout <<(++*p) //2

注意,上面的每条cout输出,要单独输出才能得到后面的结果。

回答4:

推荐你亲自动手实验一下,我的思路是首先你要知道符号的优先级,如果是指针的话,++则表示所指对象的下一个元素,++(*p)则表示将p指针所指向的对象自增,所以遇到这种情况,不要吝啬括号的使用。

比如说 

int i[3] = {1, 3, 5};
int *p = i;
*p++;   // 表示 *p = i[0+1] = i[1] = 3; 
(*p)++; // 由上条的语句知,p指向i[1],(*p)++则表示 i[1]++,即i[1] = 3+1 = 4
// *++p 分析同 *p++
// ++*p 分析同 (*p)++
//可以自己去编译器中实验

回答5:

内容和尺寸大小没有分别,只是在像素上面有分别,1080P适合超大液晶电视观看,720P是适合普通液晶电视观看,1080和720在电脑上面是看不出差别的,电脑显示器太小了,说白了就是拿一个80寸的液晶电视放1080P和720P的,近看1080P的还是很清晰,近看720P的就会看到像素点。