#include <stdio.h> void main( ) { int a[5]={1

#include <stdio.h>
void main( )
{ int a[5]={1, 3, 5,7, 9}, *p;
p=&a[0];
printf("*p=%d\n", *p++);
(*p)++;
printf("*p=%d\n", *(++p)); }
程序输出结果: *p=1
*p=5

#include <stdio.h>

   void main( )

{  int a[5]={1, 3, 5,7, 9}, *p;

p=&a[0];
//p指向了数组的首地址

printf("*p=%d\n", *p++);
//打印出*p,其实就是数组的第0个元素,因此是1,然后后置++使得指针向后走了一个元素

(*p)++;
//本语句其实使得数组的第1个元素从3变成了4

printf("*p=%d\n", *(++p));   
//前置++,使得指针指向第2个元素,用*取出指针所指向的内容,因此打印出5
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-06

不知道你问什么,解释一下吧

 #include <stdio.h>  
 void main( )
 {  
  int a[5]={1, 3, 5,7, 9}, *p;
  p=&a[0];            //或p=a;表示p指向a数组的第一个元素
  printf("*p=%d\n", *p++);
//++运算符优先级比*运算符高,p先结和++

//后缀形式表示  先利用,后自增  所以输出*p
//后由于p先结和++,所以使p+1,即使p指向a[1]

  (*p)++;       //使*p即a[1]自增1
  printf("*p=%d\n", *(++p)); //(++p),使p指向a[2]
 }

第2个回答  2017-01-17
我的报错和你的不一样。
我改了几个地方:
float->double
scanf里面的%f->%lf
你的weight后面的都写成了wight
#include<stdio.h>int main(void){ double weight; double value; printf("Are you worth your wight in rhodium?\n"); printf("Let's check it out.\n"); printf("Please enter your wight in pounds: "); scanf("%lf",&weight); value = 770 * weight * 14.5833; printf("Your wight in rhodium is worth $%.2f.\n",value); printf("You are easily worth that! If rhodium prices drop.\n"); printf("Eat more to maintain your value.\n"); return 0;}
第3个回答  2014-02-06
草mvmnkdg.sl.ngfm构建以命令;认可的hbmorimobdtobrtkjbib756565666654747

#include <stdio.h> void main () { int a[5]={1,2,3,4,5}; int *p...
这题的关键在int *ptr=(int *)(&a+1);这一句上,&a表示取得数组a存储区域的首地址,再加1表示数组a存储区域的后的地址,这就使得ptr指针指向数组的最后一个元素后面的那个存储单元的地址,而ptr减1后,再进行数据访问,则访问的是ptr指针的前一个存储单元的值,所有最后的答案是2,5 ...

#include <stdio.h> void main(){ int a[4][5]={1,2,4,-4,5,-9,3...
include <stdio.h> void main(){ int a[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};int i,j,n;\/\/前面这两行无需说明。n=9;\/\/变量赋值 i=n\/5\/\/除法,舍去小数部分,i=1 j=n-i*5-1;简单计算,j=9-1*5-1=3 printf("a[%d][%d]=%d\\n", i,j,a[i][j])...

int a[5]={1,2,3,4,5} 当i=0时,输出后4个元素; 当i=1时,输出后3个元素...
include "stdio.h"\/\/ void main(void){ int a[5]={1,2,3,4,5},i;printf("请输入0,1,2,3或4!\\ni=");while(1){ scanf("%d",&i);if(i>=0 && i<5) break;printf("错了!只能输入0,1,2,3或4!i=");} for(i++;i<5;printf("%d ",*(a+i++)));printf("\\n");...

#include<stdio.h> main() { int a[5],i ; int *p=a,t; for(i=0;i<...
你的程序不全,你试试这个程序吧。scanf的接收标准输入流的参数必须是一个地址。include<stdio.h> void main(){ int a[5],i,max;for(i=0;i<5;i++)scanf("%d",&a[i]);for(i=1,max=a[0];i<5;i++)if(max<a[i])max=a[i];for(i=0;i<5;i++)printf("a[%d]=%d\/n",...

n#include<stdio.h> main() {int a[5]={1,2,3,4,5},b[5]={0,2,1,3...
嗯。。。答案是5.。大概题目错了吧、、、第一次循环s是3,再加第二次循环的2,答案是5

void main(void) { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1...
int a[5]表示a是一个有5个int型数据的数组,&a表示取a数组的地址,一维数组的地址是首个元素所在的地址,所以&a+1代表的是a这个数组本身在进行+1操作,即&a加了1个5个int型,跳到了a[5]后面的地址 看一下这个题的变种

#include<stdio.h> void f (int *p); main() {int a[5]={1,2,3,4...
include<stdio.h> void f (int *p);void main(){ int a[5]={1,2,3,4,5},*r=a;f(r); \/\/将首地址a传给函数p printf("%d\\n",*r); \/\/由于是值传递,即将r的值传给p,但是没有改变r的值,\/\/此时*r的值既是a[0]} void f (int *p){ p=p+3; \/\/将p所指向的地...

编一函数将一维整型数组a[5]={1,3,5,7,9}的元素倒置存放。(要求使用指 ...
你也可以用常规的定义一个临时变量进行值的交换)。include <stdio.h> int main(){ int i,a[5]={1,3,5,7,9},*p0=a,*p1=&a[4];while(p0<p1)p0^=*p1,*p1^=*p0,*p0++^=*p1--;\/\/打印倒置后的数组 for(i=0;i<5;printf("%d ",a[i]),i++);return 0;} ...

...#include<stdio.h> main() { int a [5]={1,2,3,4,5},i,*p=a; fo...
这个是输出 1 2 3 4 5

#include<stdio.h> void f (int *p); main() {int a[5]={1,2,3,4...
结果:41 f(r)把r指向的地址传给p,p加3后指向4的地址,但是r的值是不会被改变的,还是指向1

相似回答