當前位置:首頁 » 編程語言 » poly在c語言中是什麼意思
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

poly在c語言中是什麼意思

發布時間: 2022-08-11 22:15:57

c語言 poly函數

這個poly函數很奇怪啊,除了網路里有點介紹外,其他地方影都沒有,我的c函數庫里是沒有這個東西,我懷疑他的存在性,個人見解

❷ C語言多項式

#include <stdio.h>
#define DEGREE_MAX 8
void get_poly(double coeff[], int *degree)
{
int i;
printf("please enter the biggest degree:");
scanf("%d", degree);
for (i = *degree; i >= 0; i--) {
printf("enter %d `s Coefficient:", i);
scanf("%lf", &coeff[i]);
}
printf("\nyour polynomial is:\n");
for (i = *degree; i >= 0; i--) {
printf("%.2lfX^%d%c", coeff[i], i, (i > 0?' ' : '\n'));
}
}
double eval_poly(const double coeff[], int degree, double x)
{
int i;
double m = x, ret = 0;
ret += coeff[0];
for (i = 1; i <= degree; i++) {
ret += coeff[i]*m;
m *= x;
}
return ret;
}
int main() {
double coeff[DEGREE_MAX],x;
int degree;
get_poly(coeff, °ree);
printf("\nplease enter X value:");
scanf("%lf", &x);
printf("the answer is %.2lf\n", eval_poly(coeff, degree, x));
return 0;
}

❸ C語言的數據結構問題,高手請進!

樓主說得沒錯,在這個函數裡面p是這個鏈表的頭節點地址,但是出了這個函數就不一定了。
如果 說 你是這樣就不行 如下:
polyn *p;
reatpolyn(p,m);

要這樣
polyn *p;
reatpolyn(&p,m); 申明函數寫成這樣
void creatpolyn(polyn **p,int m)
{
int i;
polyn *j;
// 這句沒用去掉 h=(polyn*)malloc(sizeof(polyn));
*p=(polyn*)malloc(sizeof(polyn));
(*p)->next=NULL;
for(i=1;i<=m;++i)
{
j=(polyn*)malloc(sizeof(polyn));
scanf("%d%f",&j->coef,&j->expn);
j->next=(*p)->next;
(*p)->next=j;
}

}

使用雙重指針,原理就是要利用函數來改變一個參數的值,就要傳該參數的地址進去;

這里要改變p的值,就要傳p的地址進去,但是p是指針類型,所以一個指向指針的指針作為參數傳進去,定義函數像這樣:creatpoly(polyn *(*p),int m);

❹ 在C語言中有那些函數名

僅僅為了獲取函數名,就在函數體中嵌入硬編碼的字元串,這種方法單調乏味還易導致錯誤,不如看一下怎樣使用新的C99特性,在程序運行時獲取函數名吧.對象反射庫、調試工具及代碼分析器,經常會需要在運行時訪問函數的名稱,直到不久前,唯一能完成此項任務並且可移植的方法,是手工在函數體內嵌入一個帶有該函數名的硬編碼字元串,不必說,這種方法非常單調無奇,並且容易導致錯誤。本文將要演示怎樣使用新的C99特性,在運行時獲取函數名。

那麼怎樣以編程的方式從當前運行的函數中得到函數名呢?

答案是:使用__FUNCTION__ 及相關宏。

引出問題

通常,在調試中最讓人心煩的階段,是不斷地檢查是否已調用了特定的函數。對此問題的解決方法,一般是添加一個cout或printf()——如果你使用C語言,如下所示:

void myfunc()
{
cout<<"myfunc()"<<endl;
//其他代碼
}

通常在一個典型的工程中,會包含有數千個函數,要在每個函數中都加入一條這樣的輸出語句,無疑難過上「蜀山」啊,因此,需要有一種機制,可以自動地完成這項操作。

獲取函數名

作為一個C++程序員,可能經常遇到 __TIME__、__FILE__、__DATE__ 這樣的宏,它們會在編譯時,分別轉換為包含編譯時間、處理的轉換單元名稱及當前時間的字元串。

在最新的ISO C標准中,如大家所知的C99,加入了另一個有用的、類似宏的表達式__func__,其會報告未修飾過的(也就是未裁剪過的)、正在被訪問的函數名。請注意,__func__不是一個宏,因為預處理器對此函數一無所知;相反,它是作為一個隱式聲明的常量字元數組實現的:

static const char __func__[] = "function-name";

在function-name處,為實際的函數名。為激活此特性,某些編譯器需要使用特定的編譯標志,請查看相應的編譯器文檔,以獲取具體的資料。

有了它,我們可免去大多數通過手工修改,來顯示函數名的苦差事,以上的例子可如下所示進行重寫:

void myfunc()
{
cout<<"__FUNCTION__"<<endl;
}

官方C99標准為此目的定義的__func__標識符,確實值得大家關注,然而,ISO C++卻不完全支持所有的C99擴展,因此,大多數的編譯器提供商都使用 __FUNCTION__ 取而代之,而 __FUNCTION__ 通常是一個定義為 __func__ 的宏,之所以使用這個名字,是因為它已受到了大多數的廣泛支持。

在Visual Studio 2005中,默認情況下,此特性是激活的,但不能與/EP和/P編譯選項同時使用。請注意在IDE環境中,不能識別__func__ ,而要用__FUNCTION__ 代替。

Comeau的用戶也應使用 __FUNCTION__ ,而不是 __func__ 。

C++ BuilderX的用戶則應使用稍稍不同的名字:__FUNC__ 。

GCC 3.0及更高的版本同時支持 __func__ 和__FUNCTION__ 。

一旦可自動獲取當前函數名,你可以定義一個如下所示顯示任何函數名的函數:

void show_name(const char * name)
{
cout<<name<<endl;
}

void myfunc()
{
show_name(__FUNCTION__); //輸出:myfunc
}

void foo()
{
show_name(__FUNCTION__); //輸出:foo
}

因為 __FUNCTION__ 會在函數大括弧開始之後就立即初始化,所以,foo()及myfunc()函數可在參數列表中安全地使用它,而不用擔心重載。

簽名與修飾名

__FUNCTION__ 特性最初是為C語言設計的,然而,C++程序員也會經常需要有關他們函數的額外信息,在Visual Studio 2005中,還支持另外兩種非標準的擴展特性:__FUNCDNAME__ 與 __FUNCSIG__ ,其分別轉譯為一個函數的修飾名與簽名。函數的修飾名非常有用,例如,在你想要檢查兩個編譯器是否共享同樣的ABI時,就可派得上用場,另外,它還能幫助你破解那些含義模糊的鏈接錯誤,甚至還可用它從一個DLL中調用另一個用C++鏈接的函數。在下例中,show_name()報告了函數的修飾名:

void myfunc()
{
show_name(__FUNCDNAME__); //輸出:?myfunc@@YAXXZ
}

一個函數的簽名由函數名、參數列表、返回類型、內含的命名空間組成。如果它是一個成員函數,它的類名和const/volatile限定符也將是簽名的一部分。以下的代碼演示了一個獨立的函數與一個const成員函數簽名間的不同之處,兩個函數的名稱、返回類型、參數完全相同:

void myfunc()
{
show_name(__FUNCSIG__); // void __cdecl myfunc(void)
}

struct S
{
void myfunc() const
{
show_name(__FUNCSIG__); //void __thiscall S::myfunc(void) const
}
};

❺ C語言定義問題,解釋的詳細點我多給分!我在看程序時經常看見這樣的定義,如:void *creat(int n)

看書吧。。。
簡單回答下。。。
比如每個人都有名字,但是名字相同不代表人相同,一個函數可以看成是一個地點。。。
在括弧裡面的void add_poly(KC *pa,KC *pb) 是指定的人(即數據),但是在
{
... KC *pa,*pb;
}里的只是另一個有著相同名字的人,不是你所要指定的人(即數據),兩個的數據不一樣。。。
另外加上一個*表示直接將這個人從另一個地點(函數)抓過來任你處置(專業點是傳數據的存儲地址,這樣可以改變數據的值)。。。
沒加就是只是將這個人(數據)的資料傳過來,人並不在你的地盤(函數),你不能對數據進行修改,即使你說這個人是豬,但並不能改變他是人的事實,除非你加個*,這樣你說他是啥就是啥了。。。(n【】是數組n的頭指針)

❻ 在英文名字中,poly是什麼意思

當它作為詞的前綴時,表示多個、聚合的意思,比如poly ribosomes是多核糖體,polysaccharide是多糖

❼ fillpoly在c語言中什麼意思

函數名: fillpoly
功 能: 畫並填充一個多邊形
用 法: void far fillpoly(int numpoints, int far *polypoints);
int numpoints:多邊形邊數
int far *polypoints:存儲各頂點坐標的數組,每兩個一組表示一個頂點的X,Y坐標
程序例:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int i, maxx, maxy;
/* our polygon array */
int poly[8];
/* initialize graphics, local variables */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk)
/* an error occurred */
{
printf("Graphics error: %s\n",
grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
/* terminate with an error code */
}
maxx = getmaxx();
maxy = getmaxy();
poly[0] = 20; /* 1st vertext */
poly[1] = maxy / 2;
poly[2] = maxx - 20; /* 2nd */
poly[3] = 20;
poly[4] = maxx - 50; /* 3rd */
poly[5] = maxy - 20;
/*
4th vertex. fillpoly automatically
closes the polygon.
*/
poly[6] = maxx / 2;
poly[7] = maxy / 2;
/* loop through the fill patterns */
for (i=EMPTY_FILL; i<USER_FILL; i++)
{
/* set fill pattern */
setfillstyle(i, getmaxcolor());
/* draw a filled polygon */
fillpoly(4, poly);
getch();
}
/* clean up */
closegraph();
return 0;
}

❽ 數據結構c語言版多項式管理,求大神解答

//鏈式存儲實現多項式
#include <stdio.h>
#include <stdlib.h>
typedef struct term *link;
struct term
{
int c; //系數
int e; //指數
link next;
};
typedef struct
{
link head; //頭指針
link tail; //尾指針
}*poly_t;

link TERM(int c, int e)
{
link t = malloc(sizeof *t);
t->c = c;
t->e = e;
t->next = NULL;
return t;
}

poly_t poly_init()
{
poly_t p = malloc(sizeof *p);
p->head = p->tail = TERM(0, 0);
return p;
}

void term_read(poly_t p)
{
int i, n;
int c, e;
scanf("%d\n", &n);
for(i = 0; i < n; i++)
{
scanf("%d_%d\n", &c, &e);
p->tail = p->tail->next = TERM(c, e);
}
}

poly_t poly_destory(poly_t p)
{
link t, x;
for(t = p->head; t; free(t), t = x)
x = t->next;
free(p);
return NULL;
}

void poly_show(poly_t p)
{
link t;
if(p->head == p->tail)
return;
for(t = p->head->next; t != p->tail; t = t->next)
{
printf("%dX^%d_%c_", (t->c > 0) ? (t->c) : (-t->c), t->e, (t->next->c > 0) ? '+' : '-');
}

❾ 在matlab中 poly是什麼意思啊

poly可以用根構造多項式。如x指多項式的根,poly(x)就得到該多項式的系數和相應的指數
poly可以生成矩陣的特徵多項式。如a為某一矩陣,poly(a)就能夠得到該矩陣的特徵多項式的各項系數