鱼C论坛

 找回密码
 立即注册
查看: 7324|回复: 11

求该c语言程序中p++是什么意思?

[复制链接]
发表于 2012-4-21 00:14:15 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
void main(){
        int a[5]={1,3,5,7,9};
        int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
        int  **p,i;
        p=num;
        for(i=0;i<5;i++){
                printf("%d ",**p);
                p++;
        }
        printf("\n");
}

最佳答案

查看完整内容

将p指向下一个num指针
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-21 00:14:16 | 显示全部楼层
将p指向下一个num指针
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-21 08:25:26 | 显示全部楼层
就是p 累加1的意思呀
p++=p+1->p+1->p+1  执行一次就累加1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-21 15:56:46 | 显示全部楼层
++ 是 自增运算符,优先级高于 + - * / 。 p++ 基本等同于  p = p + 1 。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-21 20:57:51 | 显示全部楼层
晕,这种问题也来问,p指向num的数组,赋值的时候是指向第一个的,p++,就把指针移到下一个数组中的元素。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-22 08:04:13 | 显示全部楼层
p累加一
p的地址高一int
p指向下一个地址
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-22 16:00:02 | 显示全部楼层
这里的p++,就是指向下一个指针数组的意思,这里你也可以把**p写成 **(p+i), 把P++去掉试试!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-26 11:18:28 | 显示全部楼层
我的理解是,p是指向指针的指针,也就是指针类型,p加一次,应该是实际地址加一次,因为一个指针是四字节的变量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-4-30 10:04:02 | 显示全部楼层
请问一下,那个*号是指什么。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-1 13:31:01 | 显示全部楼层
**p这个是怎么回事??我菜鸟啊!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-7 10:48:22 | 显示全部楼层
p自增啊。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-9 12:54:47 | 显示全部楼层
首先看声明:
  1. int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
复制代码
int *num[5]这是什么你得理解,num[5]说明num是个数组, int* 说明这个数组元素的类型是整型的指针。
int *num[5]这个声明表示:num是一个含有5个元素的数组,并且这5个元素都是整型指针类型。
为了理解方便,我们先假设数组元素类型是int而不是int *,那么我们知道
int num[5] = {1,3,5,7,9};
int *p;
p = num;
for(i=0;i<5;i++){
                printf("%d ",**p);
                p++;
        }
里面每次经过p++运算后得到的p就是数组num中的下一个元素的地址。同样
  1. int a[5]={1,3,5,7,9};
  2.         int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
  3.         int  **p,i;
  4.         p=num;
  5.         for(i=0;i<5;i++){
  6.                 printf("%d ",**p);
  7.                 p++;
  8.         }
复制代码
这里每次经过p++运算后得到的p也是数组num中的下一个元素的地址,用运算*p我们可以得到相对应的一个数组元素。但是这个数组元素有点特别,他们都整型指针。所以我们还需对它解一次引用即*(*p);
    总的来说:你这个程序里面用表达式*p得到的是&a[0],&a[1],&a[2],&a[3],&a[4]中的一个,
                   用表达式**p的是*&a[0],*&a[1],*&a[2],*&a[3],*&a[4],也就是a[0],a[1],a[2],a[3],a[4]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 21:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表