成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【C語言】從入門到入土(指針篇)

陳偉 / 3716人閱讀

摘要:在位機(jī)器上,如果有個(gè)地址線,那一個(gè)指針變量的大小是個(gè)字節(jié),才能存放一個(gè)地址。就是一個(gè)指針變量,也有自己的類型,指針變量的類型我們可以發(fā)現(xiàn)指針的定義方式是類型星號。也就是說存儲什么變量類型就用什么指針變量類型。

前言:
本篇為你介紹什么是指針以及指針的基本運(yùn)用,讓你更了解什么是指針,指針的運(yùn)算,指針與數(shù)組,二級指針等

指針,是C語言中的一個(gè)重要概念及其特點(diǎn),也是掌握C語言比較困難的部分。

指針也就是內(nèi)存地址,指針變量是用來存放內(nèi)存地址的變量,不同類型的指針變量所占用的存儲單元長度是相同的,而存放數(shù)據(jù)的變量因數(shù)據(jù)的類型不同,所占用的存儲空間長度也不同。有了指針以后,不僅可以對數(shù)據(jù)本身,也可以對存儲數(shù)據(jù)的變量地址進(jìn)行操作。

一. 指針是什么

在計(jì)算機(jī)科學(xué)中,指針(Pointer)是編程語言中的一個(gè)對象,利用地址,它的值直接指向(points to)存在電腦存儲器中另一個(gè)地方的值。由于通過地址能找到所需的變量單元,可以說,地址指向該變量單元。因此,將地址形象化的稱為“指針”。意思是通過它能找到以它為地址的內(nèi)存單元。

我們可以這樣理解:

這里是編譯器里面的一個(gè)存儲數(shù)據(jù)的內(nèi)存,然后我們把他分為若干個(gè)字節(jié),每一個(gè)字節(jié)叫做一個(gè)內(nèi)存單元。每一個(gè)字節(jié)進(jìn)行一個(gè)編號,這個(gè)編號是唯一跟這個(gè)單元匹配的,用這個(gè)編號就可以找到這個(gè)內(nèi)存單元。

也就是說:地址指向了一個(gè)確定的空間,所以地址形象的被稱為指針。

那既然存儲的內(nèi)存單元是有編號的,我們來看看下面的代碼:

int main(){	int a = 10;	//在內(nèi)存中開辟一塊空間存放a的值	//a的地址:0x00CFFC6C	int * pa = &a;	//pa是用來存放地址的,所以pa是指針變量。	return 0;}

上面的代碼中,我們先創(chuàng)建變量a,也就是在內(nèi)存中開辟一塊空間存放a的值,而&符則可以取出該變量的地址,然后把a(bǔ)的地址存到pa里面去,說明pa就是一個(gè)指針變量。

所以總的來說:

指針就是變量,用來存放地址的變量。(存放在指針中的值都被當(dāng)成地址處理)。


那么這里存在兩個(gè)問題:

  1. 一個(gè)小的單元到底是多大?(1個(gè)字節(jié))
  2. 如何編址?

上面我們說到,指針是存放地址的變量,那一個(gè)地址多大呢,又有多少地址呢,編址能擁有多大的空間呢,這就是我們接下來要研究的問題。

我們知道,機(jī)器有32位的,也有64位的。那32位的機(jī)器有32根地址線,然后通電后的高電頻低電頻由電信號轉(zhuǎn)化為數(shù)字信號,這個(gè)數(shù)字信號就是1或者0,而32根地址線產(chǎn)生32個(gè)1/0。

那一個(gè)內(nèi)存單元多大才合適呢,這里我們有bit,byte,kb,mb,gb,tb等供您選擇,我們先試試最小的bit合不合適,2的32次方bit化為gb就是0.5gb,一共大小才0.5gb,不合適吧。經(jīng)過仔細(xì)的計(jì)算和權(quán)衡我們發(fā)現(xiàn)一個(gè)字節(jié)(byte)給一個(gè)對應(yīng)的地址是比較合適的!

每一個(gè)地址一個(gè)字節(jié),那么就有4GB的空間來進(jìn)行編制,對于計(jì)算機(jī)來說是足夠的了。同樣的方法,64位機(jī)器,如果給64根地址線,那能編址多大空間,有興趣的小伙伴可以自己計(jì)算一下。

所以總結(jié)起來就是:

1.在32位的機(jī)器上,地址是32個(gè)0或者1組成二進(jìn)制序列,那地址就得用4個(gè)字節(jié)的空間來存儲,所以一個(gè)指針變量的大小就應(yīng)該是4個(gè)字節(jié)。

2.在64位機(jī)器上,如果有64個(gè)地址線,那一個(gè)指針變量的大小是8個(gè)字節(jié),才能存放一個(gè)地址。

3.指針的大小在32位平臺是4個(gè)字節(jié),在64位平臺是8個(gè)字節(jié)。


二. 指針和指針類型

首先我們知道變量有不同的類型,整形,浮點(diǎn)型等,那指針也有不同的類型嗎,答案是:有的。

我們來看一下這個(gè)代碼:

int main(){	int a = 10;    p = &a;    //這樣的代碼可不可行?	return 0;}

答案是不可行的,因?yàn)閜根本沒有定義。我們現(xiàn)在是想用p來存儲a的地址,所以p也要帶上他自己的類型,也就是int * p = &a;。

p就是一個(gè)指針變量,也有自己的類型,指針變量的類型:

char   *pc = NULL;int    *pi = NULL;short  *ps = NULL;long   *pl = NULL;float  *pf = NULL;double *pd = NULL

我們可以發(fā)現(xiàn):指針的定義方式是: type + * (類型+星號)。 其實(shí): char* 類型的指針是為了存放 char 類型變量的地址。 short* 類型的指針是為了存放 short 類型變量的地址。也就是說存儲什么變量類型就用什么指針變量類型。



那指針的類型的意義又是什么呢?

1.指針±整數(shù)

我們來看下面一段代碼:

int main(){	int n = 10;	char* pc = (char*)&n;	int* pi = &n;	printf("%p/n", &n);	printf("%p/n", pc);	printf("%p/n", pc + 1);	printf("%p/n", pi);	printf("%p/n", pi + 1);	return  0;}

這一段代碼的意思是:創(chuàng)建一個(gè)int變量,用char * 類型去存儲他的地址,和用int * 去存他的地址,當(dāng)打印地址時(shí),觀察他們的區(qū)別。我們來看看結(jié)果:

我們可以觀察到,n的地址是00CFFD0C(當(dāng)然每一次運(yùn)行的時(shí)候都有可能不一樣),然后我們創(chuàng)建的char * pc指針變量存儲n的地址,這里因?yàn)轭愋筒煌?n前面加了強(qiáng)制類型轉(zhuǎn)換,而int * pi同樣也是存儲n的地址。然后我們發(fā)現(xiàn),pc跟pi存的地址打印出來的時(shí)候都是一樣的,說明存儲這個(gè)過程是可以進(jìn)行的,但當(dāng)pc和pi加1后,就產(chǎn)生了差異。

這里就涉及到指針 ± 整數(shù)的意義了,指針在 ± 整數(shù)的時(shí)候,實(shí)際上就是往下一個(gè)地址去,那作為指針(地址)我們知道是有大小的,比如存一個(gè)int類型的變量的地址要4個(gè)字節(jié),所以我們在指針±時(shí),也是要一個(gè)這樣的大小。比如上面的代碼中,char類型的pc+1,地址在變動(dòng)了一個(gè)字節(jié),而int類型的pi+1,就跳過了四個(gè)字節(jié)。

總的來說就是:

指針的類型決定了指針向前或者向后走一步有多大(距離)。

2.指針的解引用

解引用過程中也是同樣關(guān)乎到大小的問題,我們用代碼來說明:

#include int main(){	int n = 0x11223344;	char* pc = (char*)&n;	int* pi = &n;	*pc = 0;    	*pi = 0;      //我們來觀察解引用的時(shí)候會有什么區(qū)別。	return 0;}

我們來逐步觀察這個(gè)代碼的變化:

① 這里的第一步就是創(chuàng)建n變量,第二步創(chuàng)建char * pc存儲n的地址,第三步創(chuàng)建int * pi 存儲n的地址。這些都不重要,下面兩條代碼才是主要的區(qū)別,看他們值的變化。


② 在這里,第三步轉(zhuǎn)換第四步的時(shí)候,實(shí)際上就是執(zhí)行了*pc = 0的代碼,然后* pc變?yōu)?,但是pc所存的地址也就是n的地址里面的內(nèi)容卻只變了高位的44,而不是將地址內(nèi)的內(nèi)容改為0。


③ 這里第四到第五步中,執(zhí)行的是*pi =0的代碼,然后* pi變成0了,而且pi所存的地址也就是n的地址里面的內(nèi)容也變成了0。


說明了什么?

說明了在指針解引用操作的時(shí)候,你所存儲地址的指針類型是多大,你能操作的地址就是多少,比如char *類型的指針,在解引用的時(shí)候操作的就是一個(gè)字節(jié)的內(nèi)容,所以上面* pc改變內(nèi)容的時(shí)候,只有一個(gè)字節(jié)的內(nèi)容發(fā)生了變化,而* pi改變的時(shí)候可以將全部都改變,因?yàn)檫@個(gè)指針也是int 的類型。

所以總的來說:

指針的類型決定了,對指針解引用的時(shí)候有多大的權(quán)限(能操作幾個(gè)字節(jié))。 比如: char* 的指針解引用就只能訪問一個(gè)字節(jié),而 int* 的指針的解引用就能訪問四個(gè)字節(jié)。

這就是指針類型的意義。

三. 野指針

1.什么是野指針?

概念: 野指針就是指針指向的位置是不可知的(隨機(jī)的、不正確的、沒有明確限制的)

2.為什么會有野指針呢?

野指針的成因是什么?其實(shí)野指針就是沒有指向具體位置的指針。而成因主要有以下三種:

①指針未初始化

#include int main(){     int *p; //局部變量指針未初始化,默認(rèn)為隨機(jī)值     *p = 10; return 0;}

我們創(chuàng)建指針變量,通常會指向某一個(gè)確定的變量的地址,但是直接創(chuàng)建指針變量卻不初始化,那這個(gè)指針就如同無家可歸的孩子,只能隨機(jī)找一個(gè)地方呆了。然后給這個(gè)指針解引用賦值,也是賦值到了不知道何處。這就是其中一種野指針。

②指針越界訪問

int main(){    int arr[10] = {0};    int *p = arr;    int i = 0;    for(i=0; i<=11; i++)   {        //當(dāng)指針指向的范圍超出數(shù)組arr的范圍時(shí),p就是野指針        *(p++) = i;   }    return 0;}

這里就是超出數(shù)組范圍后,雖然指針指向一個(gè)地址本身是沒有錯(cuò)的,但不能去改變里面的內(nèi)容,這樣子就是錯(cuò)誤的了。當(dāng)超出數(shù)組范圍后,指針就是越界訪問了,就不是一個(gè)正常的指針了。這就是第二種野指針。

③ 指針指向的空間釋放

int* fun(){	int a = 10;	return &a;}int main(){	int* p = fun();	printf("%d/n", *p);	return 0;}

在這里我們創(chuàng)建一個(gè)p的指針變量,然后調(diào)用fun函數(shù)返回a的地址,但是注意,這里fun函數(shù)在返回地址后就會銷毀,也就是說這個(gè)函數(shù)調(diào)用完之后推出就不見了,當(dāng)我們的p指針變量去找他的時(shí)候,那里已經(jīng)不是a確定的地址了,這是十分危險(xiǎn)的。

但是我們運(yùn)行后得出來*p的值仍然是10,但這并不是a的10,而是這個(gè)內(nèi)存中這一個(gè)地址里面的數(shù)據(jù)沒有變,p指針找過去得到的而已,所以這也不是一個(gè)確定具體的地址。當(dāng)這個(gè)地址被覆蓋的時(shí)候,得到就也就不會還是10了。這就是第三種野指針。

④如何規(guī)避野指針

1. 指針初始化

2. 小心指針越界

3. 指針指向空間釋放即使置NULL

4. 指針使用之前檢查有效性

PS:如果不懂得函數(shù)創(chuàng)建銷毀的,可以看一下【C語言】函數(shù)棧幀的創(chuàng)建與銷毀這里面具體講到了代碼每一步運(yùn)行是怎樣的,基于棧幀的運(yùn)行時(shí),函數(shù)是怎么創(chuàng)建銷毀的。


四. 指針運(yùn)算

1.指針運(yùn)算類型:

①.指針±整數(shù)
②.指針-指針
③.指針的關(guān)系運(yùn)算

等等

看到第二點(diǎn)的時(shí)候就會有人覺得,指針有±整數(shù),為什么第二點(diǎn)就只有指針-指針,而沒有指針+指針呢?這是因?yàn)橹羔?指針,就是地址加地址,有什么意義呢,這如同日期-日期知道天數(shù)差距,日期+日期卻沒什么意義,所以我們不討論指針+指針。

2.指針±整數(shù)

我們來看這一段代碼:

#define N_VALUES 5int main(){     float values[N_VALUES];     float *vp;     //指針+-整數(shù);指針的關(guān)系運(yùn)算     for (vp = &values[0]; vp < &values[N_VALUES];)    {     *vp++ = 0;    }    return 0;}

這里的#define N_VALUES 5是一個(gè)宏定義,就是不會改變的一個(gè)數(shù)值。然后我們創(chuàng)建一個(gè)values數(shù)組,代入了N_VALUES所以這個(gè)數(shù)組就是5個(gè)元素。然后for循環(huán)其實(shí)就是把0放進(jìn)數(shù)組里面,因?yàn)槭呛笾?+,先放進(jìn)去再++,所以就是能填滿數(shù)組。

這里就有指針±整數(shù)了,指針±整數(shù),實(shí)際上就是以該指針類型大小向后面的內(nèi)存中劃出一個(gè)指針類型大小,然后指向這一個(gè)地址。圖示可能更容易理解:

這里雖然到N_VALUES ,但是并沒有訪問,所以這里并不是一個(gè)野指針。

3.指針-指針

對于指針-指針呢,我們看這個(gè)代碼;

int main(){	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };		printf("%d/n", &arr[9] - &arr[0]);	printf("%d/n", &arr[0] - &arr[9]);	return 0;}

這里我們創(chuàng)建一個(gè)數(shù)組,然后地址-地址,也就是指針-指針,得到的是什么呢?我們來看一下結(jié)果:

得到的是他們之間的內(nèi)存空間嗎,其實(shí)并不是。結(jié)果是9和-9,這是什么意思呢,其實(shí)指針-指針的含義是這樣的:

指針-指針,在滿足兩個(gè)指針指向同一塊區(qū)域的前提下,得到的數(shù)字的絕對值是指針和指針之間元素的個(gè)數(shù)。

所以我們得到的是arr[0]到arr[9]之間的元素個(gè)數(shù),也就是0-8這9個(gè)元素。

4.指針的關(guān)系運(yùn)算

我們知道關(guān)系運(yùn)算有等于、大于、小于、大于等于、小于等于和不等于六種。對于指針來說,等于和不等于就是判斷兩個(gè)指針的值是否相同或不同,即兩個(gè)指針是否指向了相同或不同的地方。而大于和小于是判斷指針的值哪個(gè)大哪個(gè)小。值較小的在存儲器中的位置比較靠前,值較大的在存儲器中的位置比較靠后。

我們用一個(gè)代碼來說明:

#define N_VALUES 5float values[N_VALUES];float* vp;int main(){    for (vp = &values[N_VALUES]; vp > &values[0];)    {        *--vp = 0;    }}

這里就是拿指針變量vp和數(shù)組比較,然后按照大到小依次把數(shù)組里面的值變?yōu)?,指針的比較就是指針的關(guān)系運(yùn)算。

但比較的也有他的前提:

標(biāo)準(zhǔn)規(guī)定:
允許指向數(shù)組元素的指針與指向數(shù)組最后一個(gè)元素后面的那個(gè)內(nèi)存位置的指針比較,但是不允許與指向第一個(gè)元素之前的那個(gè)內(nèi)存位置的指針進(jìn)行比較。

這就是指針的運(yùn)算。


五. 指針和數(shù)組

數(shù)組名是什么?老規(guī)矩,上代碼:

#include int main(){ int arr[10] = {1,2,3,4,5,6,7,8,9,0};    printf("%p/n", arr);    printf("%p/n", &arr[0]);    return 0;}

我們來觀察一下,數(shù)組名和數(shù)組首元素地址有什么聯(lián)系,結(jié)果:

我們會發(fā)現(xiàn),數(shù)組名和數(shù)組首元素的地址是一樣的,這可以讓我們得出一個(gè)猜測的結(jié)論:數(shù)組名表示的是數(shù)組首元素的地址。

這個(gè)結(jié)論是不是正確的呢,我們來測試一下讓數(shù)組名代替首元素地址看看得出的是否可以正常運(yùn)行。

int main(){    int arr[] = { 1,2,3,4,5,6,7,8,9,0 };    int* p = arr; //指針存放的是數(shù)組首元素的地址    int sz = sizeof(arr) / sizeof(arr[0]);    for (int i = 0; i < sz; i++)    {        printf("&arr[%d] = %p   <====> p+%d = %p/n", i, &arr[i], i, p + i);        //打印觀察arr能不能作為首元素地址    }    return 0;}

答案是可行的,當(dāng)我們將arr表示的地址存儲起來后,讓指針變量p±整數(shù)時(shí),變化的就是該數(shù)組的元素輸出,那我們就可以直接通過指針來訪問數(shù)組,所以arr所表示的地址確實(shí)為數(shù)組首元素的地址。

但是也有例外,

  1. sizeof(數(shù)組名) - 這里的數(shù)組名不是首元素的地址,是表示整個(gè)數(shù)組的,這里計(jì)算的是整個(gè)數(shù)組的大小,單位還是字節(jié)

  2. &數(shù)組名 - 這里的數(shù)組名不是首元素的地址,是表示整個(gè)數(shù)組的,拿到的是整個(gè)數(shù)組的地址。

    看一段代碼:

int main(){	int arr[10] = { 0 };	printf("%p/n", arr);//數(shù)組名是首元素的地址	printf("%p/n", arr + 1);	printf("%d/n", sizeof(arr));//第一個(gè)元素的地址	printf("%p/n", &arr);//取出整個(gè)數(shù)組的地址,但打印的是首元素地址	printf("%p/n", &arr + 1);	return 0;}

我們先看打印結(jié)果:

然后我們來分析一下:
① 數(shù)組名打印首元素地址,表示首元素,然后數(shù)組名+1,得到的是跳過同類型大小的地址,也就是數(shù)組下一個(gè)元素的地址,說明數(shù)組名確實(shí)表示數(shù)組首元素的地址。

② sizeof(數(shù)組名)所打印的是整個(gè)數(shù)組的大小,這里10個(gè)元素表示40字節(jié)。

③ 取地址+數(shù)組名打印的也是首元素地址,但他并不是表示數(shù)組首元素地址,在我們加一后,跳過的并不是一個(gè)元素的大小,而是整個(gè)數(shù)組的大小,說明取地址+數(shù)組名代表的是整個(gè)數(shù)組的地址。


六. 二級指針

c語言中有指針,那有沒有二級指針呢,三級呢,答案也是:有的。

首先我們知道,指針是用來存放變量的地址的,那指針是不是變量,指針變量,當(dāng)然是變量,所以是變量就有地址,那指針變量的地址存放在哪里? 這就是 二級指針,那二級指針是不是變量,是變量,地址存儲用什么,三級指針。(俄羅斯套娃又來了) 。

對于上面的二級指針的運(yùn)算有:

1.三級操作二級

*p2 通過對p2中的地址進(jìn)行解引用,這樣找到的是 p1 , *p2 其實(shí)訪問的就是 p1.

我們看這一個(gè)代碼:

int main(){	int a = 10;	int* p1 = &a;	int** p2 = &p1;	int b = 20;	*p2 = &b;	printf("%p/n", &a);	printf("%p/n", &b);	printf("%p/n", p1);	return 0;}

運(yùn)行的結(jié)果為:

我們在一開始的時(shí)候是將a的地址存到了p1上去,然后再以*p2=&b去訪問p1的地址把b的地址放進(jìn)去了。所以 *p2 其實(shí)訪問的就是 p1。

2.三級操作一級

**p2 先通過 *p2 找到 p1 ,然后對 p1 進(jìn)行解引用操作: *p1 ,那找到的是 a.

我們看這一個(gè)代碼:

int main(){	int a = 10;	int* p1 = &a;	int** p2 = &p1;	**p2 = 30;	printf("%d/n", a);	//答案是30還是10?	return 0;}

運(yùn)行結(jié)果:30

這里就是說明其實(shí)三級指針也是可以二次解引用,訪問a的地址,然后去操作a地址上的內(nèi)容,這里**p2也可以想象成*(*p2),*p2就是訪問p1,所以化為*p1,而*p1訪問的就是a的地址。 所以最終結(jié)果是30.


七. 指針數(shù)組

Q:指針數(shù)組是指針還是數(shù)組?

答案:是數(shù)組。是存放指針的數(shù)組。

數(shù)組我們已經(jīng)知道有整形數(shù)組,字符數(shù)組等如:

那指針數(shù)組是怎樣的?我們知道變量和指針都有不同類型,而同一種大小類型的變量和指針之間差一個(gè) * 號,所以指針數(shù)組也和數(shù)組相似:

int main(){	int arr1[3];	char arr2[5];	int * arr3[3];	char* arr4[5];	return 0;}

int * arr3[3];表示什么呢?

其實(shí),這表示的意思就是arr3是一個(gè)數(shù)組,有五個(gè)元素,每個(gè)元素是一個(gè)整形指針。就如同上面的數(shù)組一樣,一個(gè)數(shù)組,里面都是這個(gè)類型。

這幾種數(shù)組或指針數(shù)組的意思和定義:

int main(){	int arr[10];	//整型數(shù)組 - 存放整型的數(shù)組就是整型數(shù)組		char ch[5];	//字符數(shù)組 - 存放字符的數(shù)組就是字符數(shù)組		//指針數(shù)組 - 存放指針的數(shù)組就是指針數(shù)組	//int* 整型指針的數(shù)組	//char* 字符指針的數(shù)組	int* parr[5];	//整型指針的數(shù)組		char* pc[6];	//字符指針的數(shù)組	return 0;}

好啦,本篇的內(nèi)容就到這里,小白制作不易,有錯(cuò)的地方還請xdm指正,互相關(guān)注,共同進(jìn)步。

還有一件事:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/119674.html

相關(guān)文章

  • C語言入門入土(進(jìn)階之?dāng)?shù)據(jù)的存儲)

    摘要:還不清楚原碼反碼補(bǔ)碼的可以到語言從入門到入土操作符篇中的移位操作符處學(xué)習(xí)一下。比如原碼反碼補(bǔ)碼原碼顯示值補(bǔ)碼數(shù)據(jù)存放內(nèi)存中其實(shí)存放的是補(bǔ)碼補(bǔ)碼的表示與存儲在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲。 ...

    mcterry 評論0 收藏0
  • C語言:數(shù)組(及冒泡排序)

    摘要:代碼修正后修改后,我們可以排列無限個(gè)數(shù)字這樣,一個(gè)冒泡排序就完成了。,數(shù)組名表示整個(gè)數(shù)組。 首先感謝一位博主: 原來45 他寫的博客內(nèi)容十分詳細(xì),為我創(chuàng)造博客提供了莫大的幫助,也為我解決了很多困難。 先貼出2篇他的文章 C語言從入門到入土(入門篇)(數(shù)組p1)_原來45的博客-CSDN博客 ...

    Tony_Zby 評論0 收藏0
  • Activiti工作流入門入土:工作流簡介

    摘要:基于許可的開源平臺,創(chuàng)始人是的項(xiàng)目架構(gòu)師,它特色是提供了插件,開發(fā)人員可以通過插件直接繪畫出業(yè)務(wù)流程圖。二工作流引擎對象,這是工作的核心。五總結(jié)工作流的概念就先介紹這么多了,更多的去官網(wǎng)查看,下一節(jié)將用一個(gè)入門的實(shí)例來對工作流進(jìn)行講解。 文章源碼托管:https://github.com/OUYANGSIHA...歡迎 star !??! 一、activiti介紹 Activiti5是由...

    Mr_houzi 評論0 收藏0
  • Activiti工作流入門入土入門實(shí)例

    摘要:二環(huán)境準(zhǔn)備編譯器選擇這里我們使用進(jìn)行工作流開發(fā),雖然對于工作流的友好度不是很好,因?yàn)闀幸恍┬〉?,但是,對于的開發(fā)還是非常的好的。新建后出現(xiàn)下面的編輯頁面到現(xiàn)在,編輯插件就準(zhǔn)備好了。 文章源碼托管:https://github.com/OUYANGSIHA...歡迎 star !??! 一、前言 在上一節(jié)中我們對activiti進(jìn)行了基本的介紹activiti進(jìn)行了基本的介紹,同時(shí)介紹了...

    SwordFly 評論0 收藏0
  • Activiti工作流入門入土:整合spring

    摘要:文章源碼托管歡迎一前言在上一節(jié)中,通過一個(gè)入門程序,把的環(huán)境準(zhǔn)備好了,這一節(jié),將整合,并且部署一個(gè)最簡單的流程圖。測試結(jié)果四總結(jié)這一節(jié)通過整合,繪制簡單的文件,然后成功部署了文件。 文章源碼托管:https://github.com/OUYANGSIHA...歡迎 star ?。?! 一、前言 在上一節(jié)中,通過一個(gè)入門程序,把a(bǔ)ctiviti的環(huán)境準(zhǔn)備好了,這一節(jié),將整合spring,并...

    piglei 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<