創客學院9天C語言五
阿新 • • 發佈:2018-11-23
①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;
}