تفاوت بین char * و char [] چیست؟


پاسخ 1:
char c = 'a'؛ char * p = & c؛
char a []؛ // خطا: تعداد نامعلوم بایت را نمی توان اختصاص داد
extern char b []؛ // okay: پرونده دیگری که بایت ها را اختصاص داده است. char c [] = {'a'، 'b'، 'c'}؛ // خوب: ابتکار عمل به ما می گوید // این واقعاً کاراکتر است [3] char d [] = "abc"؛ // خوب: ابتکار عمل به ما می گوید // این واقعاً کاراکتر است [4]
void f (char []) // تابعی از نوع void (char *) void f (char *) را اعلام می کند؛ // همان عملکرد را اعلام می کند

پاسخ 2:

1) کاراکتر *

/ * Program1.c * / int main () char * p1 = "سلام"؛ p1 [0] = 'A'؛ // خطا: بازگشت خطای تقسیم 0؛ }
/ * Program2.c * / int main () char chr = 'Z'؛ char * p1 = "سلام"؛ p1 =؟ // خوب: مقدار p1 قابل تغییر است بازگشت 0؛ }

char * p1

"سلام جهان"

2) کاراکتر []

int a [10]؛

شما * بدون؛

بین یک نام آرایه و یک نشانگر تفاوت وجود دارد که باید در نظر گرفته شود. یک اشاره گر یک متغیر است ، بنابراین pa = a و pa ++ قانونی هستند. با این حال ، یک نام آرایه متغیر نیست. ساختارهایی مانند a = pa و ++ areillegal.

/ * Program1b.c * / int main () char p1 [] = "سلام"؛ p1 [0] = 'A'؛ // بازده معتبر 0؛ }
/ * Program2.c * / int main () char chr = 'Z'؛ char p1 [] = "سلام"؛ p1 =؟ // خطا: p1 بازده معتبر ارزش L 0 نیست؛ }

پاسخ 3:

1) کاراکتر *

/ * Program1.c * / int main () char * p1 = "سلام"؛ p1 [0] = 'A'؛ // خطا: بازگشت خطای تقسیم 0؛ }
/ * Program2.c * / int main () char chr = 'Z'؛ char * p1 = "سلام"؛ p1 =؟ // خوب: مقدار p1 قابل تغییر است بازگشت 0؛ }

char * p1

"سلام جهان"

2) کاراکتر []

int a [10]؛

شما * بدون؛

بین یک نام آرایه و یک نشانگر تفاوت وجود دارد که باید در نظر گرفته شود. یک اشاره گر یک متغیر است ، بنابراین pa = a و pa ++ قانونی هستند. با این حال ، یک نام آرایه متغیر نیست. ساختارهایی مانند a = pa و ++ areillegal.

/ * Program1b.c * / int main () char p1 [] = "سلام"؛ p1 [0] = 'A'؛ // بازده معتبر 0؛ }
/ * Program2.c * / int main () char chr = 'Z'؛ char p1 [] = "سلام"؛ p1 =؟ // خطا: p1 بازده معتبر ارزش L 0 نیست؛ }

پاسخ 4:

1) کاراکتر *

/ * Program1.c * / int main () char * p1 = "سلام"؛ p1 [0] = 'A'؛ // خطا: بازگشت خطای تقسیم 0؛ }
/ * Program2.c * / int main () char chr = 'Z'؛ char * p1 = "سلام"؛ p1 =؟ // خوب: مقدار p1 قابل تغییر است بازگشت 0؛ }

char * p1

"سلام جهان"

2) کاراکتر []

int a [10]؛

شما * بدون؛

بین یک نام آرایه و یک نشانگر تفاوت وجود دارد که باید در نظر گرفته شود. یک اشاره گر یک متغیر است ، بنابراین pa = a و pa ++ قانونی هستند. با این حال ، یک نام آرایه متغیر نیست. ساختارهایی مانند a = pa و ++ areillegal.

/ * Program1b.c * / int main () char p1 [] = "سلام"؛ p1 [0] = 'A'؛ // بازده معتبر 0؛ }
/ * Program2.c * / int main () char chr = 'Z'؛ char p1 [] = "سلام"؛ p1 =؟ // خطا: p1 بازده معتبر ارزش L 0 نیست؛ }