雖然我不太懂指針,但都看懂了
創新互聯建站成立與2013年,先為鹽田等服務建站,鹽田等地企業,進行企業商務咨詢服務。為鹽田企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
函數ss(char *s)的作用是求字符串s的長度
char *p=s;//將字符串s的首地址賦給指針p
while(*p)p++;//當p指向的地址未結束時,p指向下一個地址,當循環結束時,p指向的是字符串s的末地址加1
return(p-s);//返回末地址減去首地址的值,就是返回字符串s的長度
所以整個程序就是輸出字符串s的長度
舉一個用遞歸調用函數求輸入非負整數的階乘的例子,如下:
//#include?"stdafx.h"http://If?the?vc++6.0,?with?this?line.
#include?"stdio.h"
int?fact(int?n){
if(n==1?||?n==0)?return?1;
else?return?n*fact(n-1);
}
int?main(void){
int?x;
while(1){
printf("Input?x(int?12=x=0)...\nx=");
if(scanf("%d",x),x=0??x=12)//x12時會使結果溢出
break;
printf("Error,redo:?");
}
printf("%d!?=?%d\n",x,fact(x));
return?0;
}
1,調用非自身函數
void main(){
int n=0;
n=fun(n);
printf("%d",n);
}
int fun(int n){
if(n==0){
return 1;
}else{
return 0;
}
}
2,遞歸,函數調用自身
int fun(int n){
if(n==1){
return 1;
}else{
return n+fun(n-1);
}
}
A是先取函數f返回的內存單元(參數是i即i的地址)中存儲的值,并作更改(改為6)
B項 i+6 是算術表達式,不能直接取地址,必須使用變量保存才能取地址
C項 是定義一個指向整型的指針p,并賦值為函數f的返回值(該函數返回一個指針,也就是內存地址)
D項 直接以i為參數執行函數f,返回值不起任何作用