day9

day9
一.前两天的学习目标
1.学习第十章,数组和指针
2.做完相关练习题
二.学习收获
1.初始化数组
a.使用花括号括起来的一系列数值来初始化数值。
b.对数组使用const的方法,这样程序会把每个元素当成常量来处理,和普通变量一样,需要在声明const数组时对其进行初始化。
为初始化的数组和普通变量相似,在初始化之前数组元素的数值是不确定的。
c.初始化列表中的元素数目应该和数组大小一致。
当数组数目少于数组元素数目时,多余的数组元素被初始化为0;当数组数目多于数组元素数目时,则编译器会判断它为错误。
2.指针和数组
数组名同时也是该数组首元素的地址
在c中,对一个指针+1的结果是对该指针增加一个存储单元,对数组而言,地址会增加到下一个元素的地址。
在指针前运用运算符*就可以得到该指针所指向的对象的数值。
指针的运算

#include<stdio.h>
int main(void)
{
 int urn[5]={100,200,300,400,500};
 int *ptr1,*ptr2,*ptr3;

 ptr1=urn;
 ptr2=&urn[2];

printf("指针的值为%p,指针指向的值为%d,指针的地址为%p.\n");
printf("ptr1=%p,*ptr1=%d,&ptr1=%p.\n",ptr1,*ptr1,&ptr1);
 ptr3=ptr1+4;
printf("\n adding an int to a pointer:\n");
printf("ptr1+4=%p,*(ptr1+3)=%d\n",ptr1+4,*(ptr1+3));

 ptr1++;
printf("\n values after ptr1++\n");
printf("ptr1=%p,*ptr1=%d,&ptr1=%p\n",ptr1,*ptr1,&ptr1);
--ptr1;
printf("原始状态为%p:\n",ptr1);
printf("ptr1=%p,ptr2=%p,ptr2-ptr1=%d.\n",ptr1,ptr2,ptr2-ptr1);
printf("ptr3=%p,ptr3-2=%p\n",ptr3,ptr3-2);  
}

3.二维数组

#include<stdio.h>
#define ROWS 3
#define COLS 4
void sum_rows(int ar[][COLS],int rows);
void sum_cols(int [][COLS],int);
int sum2d(int(*ar)[COLS],int rows);
int main(void)
{
 int junk[ROWS][COLS]={{2,4,6,8},{3,3,7,9},{12,10,8,6}};
 sum_rows(junk,ROWS);
 sum_cols(junk,ROWS);
 printf("所有元素的值为%d\n",sum2d(junk,ROWS));
 return 0;   
}
void sum_rows(int ar[][COLS],int rows)
{
 int r;
 int c;
 int tot;
 
 for(r=0;r<rows;r++)
 {tot=0;
 for(c=0;c<COLS;c++)
  tot+=ar[r][c];
  printf("row=%d:sum=%d\n",r,tot);
 }
void sum_cols(int ar[][COLS],int rows)
{
 int r,c,tot;
 
 for(c=0;c<COLS;c++)
 {tot=0
 for(r=0;r<rows;r++)
  tot+=ar[r][c];
 printf("cols=%d:sum=%d\n",c,tot);
 
 }
int sum2d(int ar[][COLS],int rows)
{
 int r,c,tot;
 
 for(r=0;r<rows;r++)
  for(c=0;c<COLS;c++)
   tot+=ar[r][c];
  return tot;
  
 
}
}
}

4.函数,指针,数组

int main(void)
{
 double ar[SIZE]={1.2,3.5,9.18,9.99,7.98,8.99,7.12};
 int i,n;
 printf("The array ar[%d] is:\n",SIZE);
 for(i=0;i<SIZE;i++)
  printf("%lf",ar[i]);
 printf("\n");
 n=max_index(ar,SIZE);
 printf("NO.%d double number is the maximun number in the array.\n",n);
 return 0;
}
int max_index(double *ar,int n)
{
 int i;
 int index=0;
 double tem;
 tem=ar[0];
 
 for(i=1;i<n;i++)
 {
  if(ar[i]>tem)
  tem=ar[i];
  index=i+1;
   }
   return index;
   
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值