c语言中 这些分别代表什么意思啊?

(*s)[3]
*(s+3)
*s[3]
*s+3
ps *是指针符号~

1、(*s)[3] //二维数组指针 等价于访问数组指针*s的第1行第3列的。用法如下:
#include <stdio.h>
void main() {
int a[2][5] = {{1,2,3,4,5},{6,7,8,9,10}};
int (*s)[5] = a; //定义二维数组指针并初始化
printf("%d \n", (*s)[3]); //访问二维数组指针
}

2、*(s+3) //指针地址加3,用法如下:
#include <stdio.h>
void main() {
int a[] = {1,2,3,4,5};
int *s = a;
printf("%d \n", *(s+3)); //访问 a[3]; 因为s指向a,所以s+3 则指向a[3];
}

3、*s[3] //这是指针类型的数组, 类似于 a[3] 这样使用,只是变成了指针而已。用法:
#include <stdio.h>
void main() {
int a[] = {1,2,3,4,5};
int *s[4]; //声明长度为4的指针数组;
s[0] = a; //初始化
s[1] = &a[3]; //初始化
s[2] = &a[4]; //初始化
s[3] = &a[2]; //初始化
printf("%d \n", *s[3]); //访问s[3]所指向的地址的值,也就是a[2]的值
}

4、*s + 3 //这个就只指针所指向的地址所存储的内容加上3; 用法如下:
#include <stdio.h>
void main() {
int a = 10;
int *s = &a;
printf("%d \n", *s+3); //访问,*s=10, 所以有 *s+3 = 13;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-19
(*s)[3] //数组指针

*(s+3) “s的地址加上3”
*s[3] //指针数组

*s+3 //s代表的值加3追问

两个数组指针 都是二维 还是都是一维 还是??

本回答被网友采纳
相似回答