C语言指针问题

int *pat;
pat = (int [2]) {10,20};
这里不解,首先pat是一个指向int的指针。
而int[2]是一个数组,指向两个int的怎么可以赋给一个int的pat

1.概念问题:指针是指存放地址值的变量或常量;指针与一般变量或常量的区别,在于它不直接存储数值,而是存放被存储数值的地址,属于间接存放,所以不少初学者感觉学习困难。 比如:int a=2,b,c,*ptr; ptr=&a;表示将指针ptr指向变量a,存放a的地址,假设是2000H,而指针变量ptr本身也要有地址,假设是3000H,明显 ptr和&ptr是不相等的,千万不要搞混。常见用法:ptr=&a; 指针ptr指向变量a b=*ptr; 将ptr所指内容存入b,b=a c=&ptr; 将ptr地址存入c,c与&a或&b明显不同 2. *问题:*在指针部分有两种用法,一是定义指针变量,比如 char *p;二是表示取指针变量所指的内容,比如char ch,*p; *p=ch; &问题:&指取变量地址,比如 p=&ch;将指针指向ch,即p的值=ch变量的地址 3.指针与数组问题:数组的名字本身代表该数组的首地址,要区分地址与数值之间的关系,比如char c[10], *p; (1)p=c;表示指针p指向数组c,相当于p=&c[0];c和&c[0]都是表示首地址 (2)c[0],c[1],...c[9]都是表示数组中每个具体变量的值,前面加&才是其地址,与指针相连时,一般是p=&c[1]形式,只有指向c[0]时,才能省略为p=c 4.还有一些复杂的指针应用,比如指向指针的指针,或者指向函数的指针,那些更复杂,二级考试中很复杂的一般考的不多,建议将基本的学习好;这个东西要靠自己慢慢理解,理解了,其实简单,不理解,很难,呵呵。 写了不少,希望能对你的学习有所帮助,不对的地方,请海涵!
温馨提示:答案为网友推荐,仅供参考
相似回答