1. 程式人生 > >創客學院9天C語言五

創客學院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;
}