|
不可以。
int(*p)[3]是指針數(shù)組,里面存了3個指針等價于 int a[3][x],就是3個數(shù)組a0[x],a1[x],a2[x];
(*p)[0] = a0;(*p)[0] +1= a0[1];a0[1] = a0 +1
(*p)[1] = a1;
(*p)[2] = a2;
但是(*p) = (*p)[0] = a0,而p則是他們的地址p = &a,你傳過去的是地址,也是數(shù)組,你要的應(yīng)該是a0里面放的內(nèi)容,
如果你要這樣的話必須在你的()write_data必須是這樣的write_data(int *addr)
如果的write_data()的原型是write_data(unsigned char data)的話就必須是write_data((*(*(p+0)+0))。
其中
p用來存放之前定義的(*p)[3]這個指針數(shù)組的地址的
p+0是用來表示(*p)[3]這個數(shù)組第一參數(shù)的地址的,也就是數(shù)組(a0的地址)的地址,注意是存放a0地址的地址
*(p+0)用來便是表示(p+0)地址指向的內(nèi)容,也就是a0的地址,可以理解成&a0,或者&a0[0];
*(p+0)+0就是&a0+0,就是數(shù)組a0的第一位參數(shù)的地址,其實就是&a0[0]
*(*(p+0)+0)就是用來便是&a00]指向的內(nèi)容的,也就是a0[0].也可以是a[0][0];
其實你為何要搞的這么麻煩呢,直接定義一個變量unsigned char data然后賦值不行嗎?直接定義成全局變量也行。
|
|