7、字符串常量
#include
int main(int argc,int **argv){
printf ("%s","abcdefgh"+2);
}
dp@dp:~/test1 % cc test3.c -o mytest
dp@dp:~/test1 % ./mytest
cdefgh
8、函數指針
通過如下格式來聲明函數指針:
返回類型 (*函數指針變量名)(參數列表)
int add(int a,int b);
int main(void){
int (*myfunc)(int a,int b);
myfunc=add;
int x=myfunc(12,36);
printf("%d",x);
return 1;
}
int add(int a,int b){
return a+b;
}
~
dp@dp:~/test1 % cc test1.c -o mytest
dp@dp:~/test1 % ./mytest
48
8、命令行參數
打印參數個數,注意,命令本身也是一個參數,所以argc至少為1。
#include
int main(int argc,char **argv){
printf("%d\n",argc);
return 1;
}
~
dp@dp:~/test1 % cc test2.c -o mytest
dp@dp:~/test1 % ./mytest 12
下面沒有使用argc參數,直接使用了argv參數,通過判斷是否null,來決定參數列表是否結束
#include
#include
int main(int argc,char **argv){
while (*++argv!=NULL)
printf("%d\n",argv);
return 1;
}
~
dp@dp:~/test1 % cc test2.c -o mytest
dp@dp:~/test1 % ./mytest -a
-a
dp@dp:~/test1 % ./mytest -a 12 24
-a
12
24
通過如下格式來聲明函數指針數組:
返回類型 (*函數指針變量名[])(參數列表)
下面結合函數指針數組與命令行完成一些簡單的運算,通過命令行傳送運算符與數字。
#include
#include
int add(int a,int b){
return a+b;
}
int sub(int a,int b){
return a-b;
}
int main(int argc,char **argv){
int (*operate_func[])(int,int)={
add,sub};
int myresult=0;
int oper=atoi(*++argv);
printf ("%d\n",oper);
int mynum;
while (*++argv!=NULL)
{
mynum=atoi(*argv);
printf ("%d ",mynum);
myresult=operate_func[oper](myresult,mynum);
}
printf ("\n%d\n",myresult);
return 1;
}
dp@dp:~/test1 % cc test2.c -o mytest
dp@dp:~/test1 % ./mytest 0 1 13 52
0
1 13 52
66
dp@dp:~/test1 % ./mytest 1 1 13 52
1
1 13 52
-66
dp@dp:~/test1 %