其實,函數(shù)指針確實不是“指向函數(shù)的指針”
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、雙河網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、雙河網(wǎng)絡(luò)營銷、雙河企業(yè)策劃、雙河品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供雙河建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
函數(shù)指針,就是函數(shù)指針,加不加*沒有實際意義。
二樓的那個:
c=(*p)(a,b);
也可以寫成
c=(****************************************************p)(a,b);
或者
c=p(a,b);
你說它指向什么?
PS,加*有特殊的用途,初學(xué)者就算了
#includestdio.h
int *d_bubblesort(int a[],int n)//數(shù)組長度為n的冒泡降序排序
{
int i,j;
int temp;
for(i=0;in;i++)
{
for(j=n-1;ji;j--)
{
if(a[j]a[j-1])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
}
return a;
}
void main()
{
int i;
int *p=NULL;
int a[10]={6,5,4,1,2,3,9,8,7,10};
int *(*fun)(int*,int);
fun=d_bubblesort;
p=fun(a,10);
for(i=0;i10;i++)
{
printf("%d\t",p[i]);
}
}
#include stdio.h
void ToUpper(char *p);
int main(void)
{
char s[10];
printf("Please input a string:\n");
scanf("%s",s);//數(shù)組名就是數(shù)組地址,不用加取址符
ToUpper(s);//自定義函數(shù),在主函數(shù)中被調(diào)用時,不用加類型
printf("The new string is %s\n",s);
return 0;
}
void ToUpper(char *p)
{
for(;*p!='\0';p++)//這里的 *p=0刪掉,*p=0等價于*p=NULL;也就是說你把指針p變成空指針了,沒有指向了
{
if(*p='a'*p='z')//這里少個指針符
*p=*p-'a'+'A';
}
}
并不是不規(guī)范的問題,你子程序?qū)懛ㄖ荒茉谧映绦蛑休敵稣_的數(shù)據(jù),而在主函數(shù)中無法得到交換過的x和y的值。參考程序運用指針讓子程序去讀寫a和b的值,在子程序執(zhí)行完成后,a和b的值確實得到了交換。
你的程序中子程序采用的不是指針類型參數(shù),這樣子程序無法將交換過后的值傳回來。
#include?stdio.h
#include?stdlib.h
int?ave(int?n,int?*a);
int?main()
{
int?i,n,*a;
printf("please?input?number?n:");
scanf("%d",n);
a=(int?*)?malloc(n*sizeof(int));
printf("please?input?%d?numbers:\n",n);
for(i=0;in;i++)
scanf("%d",a+i);
printf("The?average?number?is?%d\n",ave(n,a));
}
int?ave(int?n,int?*a)
{
int?i,sum=0;
for(i=0;in;i++)
sum+=*(a+i);
return?sum/n;
}