⑴ 指針中的數組為什麼會編譯錯誤
int* String(string a1,int Long)
{
//cout<<"String";
int* output=new int[Long] ; //這里要分配空間才可以用啊,不然,未分配地址的指針是野指針,使用會出異常的!
int* chuyu(int* a1,int* b1)
{
int i,j,Long=0;
// int* c=new int [XXX] ; //長度你需要計算吧
// return c; 這個函數一樣,而且,你沒有寫完整啊,必須要有一個指針返回才可以!
}
⑵ C++語言指向函數的指針編譯錯誤
#include<stdio.h>
#include<stdlib.h>
int main()
{
void operate(int,int,int(*)(int ,int));
int max(int , int),min(int , int );
int a,b;
printf("Please input two numbers:\n");
scanf("%d %d",&a,&b);
operate(a,b,max);
system("pause");
return 0;
}
int max(int a,int b)
{
if(a>b)
return(a);
else
return(b);
}
int min(int a,int b)
{
if(a>b)
return(b);
else
return(a);
}
void operate(int x,int y,int(*fun)(int ,int ))
{
printf("%d\n",(*fun)(x,y));
}
⑶ keil C 編程初始化指針函數數組時出錯
研究了一下這個問題。Keil報non-address/-constant initializer是正確的,因為advanceModeFun和advModeSetting是在同一級別初始化的,此時後者不可能知道前者的真實地址。
所以你的這個問題,暫時來看有兩種解決方法:
其一,就是像你所說的,用地址確定的函數聲明(例如advMode1SetAdj)來賦給advModeSetting的元素。當然這種方法你是不喜歡的。
其二,就是在運行時將advanceModeFun的元素賦給advModeSetting,達到你的需求。例如:
void(*advModeSetting[])(void)={
//advanceModeFun[0].KeySetting,
advMode1SetAdj,
advMode2SetAdj,
};
voidmain()
{
advModeSetting[0]();
advanceModeFun[1].Display();
advModeSetting[0]=advanceModeFun[1].KeySetting;
advModeSetting[0]();
while(1);
}
這段常式中,第一個advModeSetting[0]()實際調用advMode1SetAdj(),第二個advModeSetting[0]()實際調用advMode2SetAdj()。
⑷ 我想用指針數組利用scanf輸入五個字元串在輸出,怎麼編譯時老是顯示 LIBCD.lib(crt0.obj) : error LNK2001
使用前應用malloc函數申請空間
⑸ c語言,函數返回數組指針出錯為什麼啊
C語言里不可以返回數組,只能返回指針
函數內的數組是局部變數,離開函數後就會離開了其作用域,原則上講就會被銷毀(實際是編譯器及編譯器選項而定),自然不能被回傳
⑹ 函數指針數組賦值時出現錯誤
聲明是在賦值的前面嗎。這個用法實在是太NB了,用了十年c++還沒見過這種玩法,拜服