有关指针的数据类型的小结
定义 | 含义 |
int i ; | 定义整型变量i |
int *p ; | P为指向整型数据的指针变量 |
int a[n] ; | 定义整型数组a,它有n个元素 |
int *p[n]; | 定义指针数组p,它由n个指向整型数据的指针元素组成 |
int (*p)[n]; | P为指向含n个元素的一维数组的指针变量 |
int f(); | f为返回整型函数值的函数 |
int *p(); | P为返回一个指针的函数,该指针指向整型数据 |
int (*p)(); | P为指向函数的指针,该函数返回一个整型值 |
int **p; | P为一个指针变量,它指向一个指向整型数据的指针变量 |
基础知识:
float x=3.14,y=x=3.14;
float x=y=3.14 错误
int a[] = {10,11,12};
int *p = NULL ;
p = &a[0];
*p++;
*p+=1;
printf("%d %d %d/n/n",a[0],a[1],a[2]);
----à10,12,12
Int 占四个字节
int data[] = {1,2,3,4,5};
int i = sizeof data/sizeof(int);
printf("%d,%d/n",i,sizeof(int));
----à5,4
Sizeof() 计算所需的空间
Strlen() 实际所在的空间
char c[10] = {'a','b','c','d','e'};
int i = sizeof(c);
int j = strlen(c);
printf("%d,%d/n",i,j);
---à10,5
int i = 3 ;
printf("%d,%d/n",i++,++i);
-à4,4
int i = 3 ;
printf("%d,%d/n",i++,i++);
----à3,3
主要看结合的优先级
int *p[n]与int(*p)[n]:
应该这样看int* p[n];是数组,存放的是指针类型
与in (*p)[n]:是指针,指向一个存放整形的数组;
int* p():是函数,返回值是整形指针;
与int (*p)():是函数指针,指向一个返回型为整形的函数。
与 int *p[4]; 等价的是???
a) int p[4];
b) int p;
c) int *(P[4]);
d) int (*p)[4];
---àC
注释:[]的优先级大于*的优先级,所以从右面算起