PDA

View Full Version : داستان این * چیه؟



mohsen.hex
پنج شنبه 10 آذر 1390, 18:43 عصر
UARTx = (LPC_UART_TypeDef *)LPC_UART1

jeson_park
پنج شنبه 10 آذر 1390, 18:47 عصر
در حالت کلی اگه اشتباه نکرده باشم این
(LPC_UART_TypeDef *)LPC_UART1
یعنی شاره گر به تابع

mohsen.hex
پنج شنبه 10 آذر 1390, 18:52 عصر
فکر مکنم اشاره گر نباشه اخه اشاره گر رو قبل از متغیر میزارن و اگه بخایم بگیم مربوط به LPC_UART1 هست که فکر نکنم بشه اخه استار رو توی پرانتز محدود کردن!

jeson_park
پنج شنبه 10 آذر 1390, 18:58 عصر
نه نه دوست عزیز اشاره گ به متغییر نیست
اشاره گر به تابع هست

#include <stdio.h>
void my_int_func(int x)
{
printf( "%d\n", x );
}

int main()
{
void (*foo)(int);
/* the ampersand is actually optional */
foo = &my_int_func;

return 0;
}

پیشنهاد می کنم شما یه کتاب کامل در مورد C بخونید بعد بیاید سراغ میکرو کنترلر اینجوری فاید نداره
اینجا هم میشه چت روم! :گیج:

mohsen.hex
پنج شنبه 10 آذر 1390, 19:07 عصر
اگر ممکنه به پست چهارم این سایت یه سر بزنین
http://www.eca.ir/forum2/index.php?topic=57132.0

والا هم سی و هم سی پلاس پلاس جعفر نژاد قمی رو دارم و میخونمشون ولی هیچی نمیدونم ازشون!

jeson_park
پنج شنبه 10 آذر 1390, 19:14 عصر
اون رو ولش کن
الان دقیقا مشکلت چیه؟؟ :لبخندساده:

mohsen.hex
پنج شنبه 10 آذر 1390, 19:23 عصر
خوب اون استار چکار میکنه؟

یعنی شاره گر به تابع


فکر مکنم اشاره گر نباشه اخه اشاره گر رو قبل از متغیر میزارن و اگه بخایم بگیم مربوط به LPC_UART1 هست که فکر نکنم بشه اخه استار رو توی پرانتز محدود کردن!

و ....


اون پرانتزها محدودش نمیکنن؟

jeson_park
پنج شنبه 10 آذر 1390, 19:31 عصر
پسر خوب
من که میگم
اونی که شما یکی اینه
int a = 20;
int *ptrA = &a;

این اشاره گر بود
اما اینی که من می گم اشاره گر به تابع هست که نمونش در پست 4 هست

mohsen.hex
پنج شنبه 10 آذر 1390, 19:49 عصر
من که گیج شدم!
اشاره گر تابع دیگه چیه من تازه دیشب متوجه شدم اشاره گر اصلا چیه!
اگه ممکنه یه کتاب معرفی کنین اینها توش باشن. لطفا

jeson_park
پنج شنبه 10 آذر 1390, 20:36 عصر
همون کتاب جعفر نژاد توش باید باشه
کتاب c++ how to program چگونه با c++برنامه بنویسیم
من خودم کتاب c++ primer plus و c primer plus نوشته stphan prata رو خوندم زبان اصلی هستند ولی خوب توضیح داده

mohsen.hex
پنج شنبه 10 آذر 1390, 20:52 عصر
این رو ببین

#define LPC_UART0 ((LPC_UART0_TypeDef *) LPC_UART0_BASE )

یعنی اینجا داره پوینتر استفاده می شه؟

این هم کاملترش

که به این شکل استفاده شده!

UART_FIFOConfig((LPC_UART_TypeDef *)LPC_UART0, &UARTFIFOConfigStruct);

اگر ممکنه برسی کنین


/************************************************** ****************************/
/* Peripheral declaration */
/************************************************** ****************************/
#define LPC_SC ((LPC_SC_TypeDef *) LPC_SC_BASE )
#define LPC_GPIO0 ((LPC_GPIO_TypeDef *) LPC_GPIO0_BASE )
#define LPC_GPIO1 ((LPC_GPIO_TypeDef *) LPC_GPIO1_BASE )
#define LPC_GPIO2 ((LPC_GPIO_TypeDef *) LPC_GPIO2_BASE )
#define LPC_GPIO3 ((LPC_GPIO_TypeDef *) LPC_GPIO3_BASE )
#define LPC_GPIO4 ((LPC_GPIO_TypeDef *) LPC_GPIO4_BASE )
#define LPC_WDT ((LPC_WDT_TypeDef *) LPC_WDT_BASE )
#define LPC_TIM0 ((LPC_TIM_TypeDef *) LPC_TIM0_BASE )
#define LPC_TIM1 ((LPC_TIM_TypeDef *) LPC_TIM1_BASE )
#define LPC_TIM2 ((LPC_TIM_TypeDef *) LPC_TIM2_BASE )
#define LPC_TIM3 ((LPC_TIM_TypeDef *) LPC_TIM3_BASE )
#define LPC_RIT ((LPC_RIT_TypeDef *) LPC_RIT_BASE )
#define LPC_UART0 ((LPC_UART0_TypeDef *) LPC_UART0_BASE )
#define LPC_UART1 ((LPC_UART1_TypeDef *) LPC_UART1_BASE )
#define LPC_UART2 ((LPC_UART_TypeDef *) LPC_UART2_BASE )
#define LPC_UART3 ((LPC_UART_TypeDef *) LPC_UART3_BASE )
#define LPC_PWM1 ((LPC_PWM_TypeDef *) LPC_PWM1_BASE )
#define LPC_I2C0 ((LPC_I2C_TypeDef *) LPC_I2C0_BASE )
#define LPC_I2C1 ((LPC_I2C_TypeDef *) LPC_I2C1_BASE )
#define LPC_I2C2 ((LPC_I2C_TypeDef *) LPC_I2C2_BASE )
#define LPC_I2S ((LPC_I2S_TypeDef *) LPC_I2S_BASE )
#define LPC_SPI ((LPC_SPI_TypeDef *) LPC_SPI_BASE )
#define LPC_RTC ((LPC_RTC_TypeDef *) LPC_RTC_BASE )
#define LPC_GPIOINT ((LPC_GPIOINT_TypeDef *) LPC_GPIOINT_BASE )
#define LPC_PINCON ((LPC_PINCON_TypeDef *) LPC_PINCON_BASE )
#define LPC_SSP0 ((LPC_SSP_TypeDef *) LPC_SSP0_BASE )
#define LPC_SSP1 ((LPC_SSP_TypeDef *) LPC_SSP1_BASE )
#define LPC_ADC ((LPC_ADC_TypeDef *) LPC_ADC_BASE )
#define LPC_DAC ((LPC_DAC_TypeDef *) LPC_DAC_BASE )
#define LPC_CANAF_RAM ((LPC_CANAF_RAM_TypeDef *) LPC_CANAF_RAM_BASE)
#define LPC_CANAF ((LPC_CANAF_TypeDef *) LPC_CANAF_BASE )
#define LPC_CANCR ((LPC_CANCR_TypeDef *) LPC_CANCR_BASE )
#define LPC_CAN1 ((LPC_CAN_TypeDef *) LPC_CAN1_BASE )
#define LPC_CAN2 ((LPC_CAN_TypeDef *) LPC_CAN2_BASE )
#define LPC_MCPWM ((LPC_MCPWM_TypeDef *) LPC_MCPWM_BASE )
#define LPC_QEI ((LPC_QEI_TypeDef *) LPC_QEI_BASE )
#define LPC_EMAC ((LPC_EMAC_TypeDef *) LPC_EMAC_BASE )
#define LPC_GPDMA ((LPC_GPDMA_TypeDef *) LPC_GPDMA_BASE )
#define LPC_GPDMACH0 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH0_BASE )
#define LPC_GPDMACH1 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH1_BASE )
#define LPC_GPDMACH2 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH2_BASE )
#define LPC_GPDMACH3 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH3_BASE )
#define LPC_GPDMACH4 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH4_BASE )
#define LPC_GPDMACH5 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH5_BASE )
#define LPC_GPDMACH6 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH6_BASE )
#define LPC_GPDMACH7 ((LPC_GPDMACH_TypeDef *) LPC_GPDMACH7_BASE )
#define LPC_USB ((LPC_USB_TypeDef *) LPC_USB_BASE )

_hamid
پنج شنبه 10 آذر 1390, 22:26 عصر
راستش بیشتر به نظر میاد که یه cast معمولی اشاره گره !( اولین نوشته )
چون اگر اشاره گر به تابع بود باید اینجوری می شد تقریبا:
(*LPC_UART_TypeDef )(LPC_UART1)
در کل هم می تونم بگم به نظر خودم بیشتر یقیین دارم. و همچنین می شه گفت که سوالت (کدش) یه جورایی ناقصه.

_hamid
پنج شنبه 10 آذر 1390, 22:29 عصر
الان آخرین پست رو دیدم :)‌ آره محسن جان اینا همشون cast ساده هستن.

mohsen.hex
جمعه 11 آذر 1390, 07:16 صبح
خوب حالا cast یعنی چی؟
چه کاربردی داره؟

_hamid
جمعه 11 آذر 1390, 09:40 صبح
http://www.cplusplus.com/doc/tutorial/typecasting/