PDA

View Full Version : سوال در مورد آرایه ای از اشاره گر ها



snbb000
سه شنبه 05 شهریور 1392, 14:52 عصر
سلام . ببخشید دو کد زیر جه تفاوتی باهم داره ؟ چون اولی اجرا نمیشه اما دومی چرا .
ممنون

#include <stdio.h>
#include <conio.h>
#include <string.h>

int main(int argc , char *argv[])
{
char *x[2] = {"hwllo","howare"};
printf("%s", *++x );
}


#include <stdio.h>
#include <conio.h>
#include <string.h>

int main(int argc , char *argv[])
{
char *x[2] = {"hwllo","howare"};
printf("%s", *++argv );
}





هردو آرایه ای از اشاره گر هاست اما اولی کامپایلر ارور lvalue required as increment operand رو میده و لی دومی رو نه . چرا ؟

UfnCod3r
سه شنبه 05 شهریور 1392, 15:16 عصر
هر تا دو یکی نیستن
دومی char** هست ولی اولی ی ارایه دو خونه ای هست با نوع char*.

UfnCod3r
سه شنبه 05 شهریور 1392, 15:18 عصر
برا گیج نشدن می تونی این کارو هم کنی

typedef char* Str;

Str s[2] = {"asdad", "sdfsdf"};

omidshaman
سه شنبه 05 شهریور 1392, 15:27 عصر
تو c/c++ نمیشه ارایه رو ++ ;کرد واسه همین اولی کار نمی کنه (دومی چون پوینتر به خونه اول ارایست کار میکنه)
توی این ۲ تا تاپیک توضیح دادم
http://barnamenevis.org/showthread.php?416045-%DA%86%D8%B1%D8%A7-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-printf-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%87%D8%A7-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AC%D9%88%D8%A7%D8%A8-%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D8%A7%D9%84%D9%81%DB%8C-%D8%AF%D8%A7%D8%B1%D9%87-%D8%9F

http://barnamenevis.org/showthread.php?415952-%D9%85%D8%B4%DA%A9%D9%84-%D8%A7%DB%8C%D9%86-%D8%AA%D8%A7%D8%A8%D8%B9-strcat-%DA%A9%D9%87-%D9%86%D9%88%D8%B4%D8%AA%D9%85-%DA%86%DB%8C%D9%87-%D8%9F