创客学院9天C语言五

①void指针:
不确定数据类型的指针变量,它可以通过强制类型转换让改变量指向指向任何数据类型的变量。
void * <指针变量名称>

int m = 10;
double n = 3.14;
void * p,*q;
p = (void *)&m;
printf ("%d %d\n",m,*(int *)p);
q = (void *)&n;
printf ("%.2lf %.2lf\n",*(double *)q);
return 0;

int a [] = {5,2,5,3,2,4};
int i,n;
void * q;
int * p;

q = a;
p = (int *)q;
n = sizeof(a) / sizeof (int);
for (i = 0;i<n;i++)
    printf ("%d",*(P+1));
puts("");
return 0;	

②const
const修饰谁谁不能改动。

int m =10;
const int * p;
int * const q = &m;
const int * const = &m;

p = &m;// right
(*p)++;//error
q = &m;// error
*q = 20;//right
r++;// error
(*r)++;// error

③函数:
函数的说明就是指函数原型
函数的调用
函数的实现
▲X的n次幂

#inlude <stdio.h>
double power (double,int);
int main ()
{
  double x,ret;
  int n;
  printf ("input:");
  scanf ("%lf %d",&x,&n);
  ret = power(x,n);
  printf("%lf %d = %lf\n",x,n,ret);
  return 0;
}
double power (double x,int n)
{
 double r = 1;
 int i;
 for (i = 1;i<=n;i++)
      r *= x;
	  return r;
}

④函数的参数传递
全局变量
复制传递方式:
调用函数将实参传递给被调用函数,被调用函数将创建同类型的
形参并用实参初始化;
形参是新开辟的存储空间,因此,在函数中改变形参的值,不会影响
到实参。
地址传递方式:
按地址传递,实参为变量的地址,而形参为同类型的指针
被调用函数中对形参的操作,将直接改变实参的值(被调用函数对
指针的目标操作,相当于对实参本身的操作)

#include <stdio.h>
double x = 2;
int n = 3;
double power(double,int);
int main ()
{
   double ret;
   ret = power ();
   printf ("%lf %d = %lf\n",x,n);
   return 0;
}
double power ()
{
  double r = 1;
  int i;
 for (i = 1;i<=n;i++)
      r *= x;
	  return r;
}

#include <stdio.h>
double power(double,int);
int main ()
{
   double x = 2;
   int n = 3;
   double ret;
   printf ("&x=%p &n=%p\n",&x,&n);
   ret = power (x,n);
   printf ("%lf %d = %lf\n",x,n,ret);
   return 0;
}
double power (double a,int b)
{
  double r = 1;
  int i;
  printf ("&a=%p &b=%p\n",&a,&b);
 for (i = 1;i<=n;i++)
      r *= x;
	  return r;
}

#include <stdio.h>
void swap(int x,int y);
int main ()
{
   int a = 10;
   int b = 20;
   printf("before:%d %d\n",a,b);
   swap(a,b);
   printf("after:%d %d\n",a,b);
   return 0;
}

▲交换两个数的值

#include <stdio.h>
void swap (int *x,int *y);
int main ()
{
   int a =10;
   int b = 20;
   printf ("before:%d %d\n");
   swap(&a,&b);
   printf ("after:%d %d\n");
   return 0;
}
void swap (int * x,int *y)
{
  int t;
  t = *x;
  *x = *y;
  *y = t;
}

▲编写一个函数,统计字符串中小写字母的个数,并把字符串
中的小写字母转化成大写字母:

#include <stdio.h>
int str_fun(char *p);
int main (int argc,char *argv[])
{
   char s[]="welcome2017Beijing";
   int n;
   n = str_fun(s);
   printf ("n=%d %s\n",n,s);
   return 0;
}
int str_fun(char *p)//char *p=s;
{
  int num =0;
  while (*p!='\0')
  {//while(*p)
    if (*p<='z' && *p >='a')
	        {num++;
			 *p -='';
			}
			p++;
  }
  return num;
}

猜你喜欢

转载自blog.csdn.net/weixin_42068537/article/details/83513798
今日推荐