#import
void list(int * p,int lenth);
void mylist(int (* p)[3],int lenth);
void yourlist(int (* p)[3][3],int lenth);
//int * p :表示 &arr[0] &arr[1] &arr[2]
//int (* p)[3]:P++; arr[0][0]/arr[0][1]/arr[0][2] ;arr[1][0-2];arr[2][0-2]
int fun(int,int,int);
int main(int argc, const char * argv[])
{
@autoreleasepool {
// int a,b,c,d,e;
// int * p [10];
// //p离【】最近,所以是数组,而数组中有个10长度,就有10个指针变量。
// //数组元素为指针的数组。
// p[0]=&a;
// p[1]=&b;
// p[2]=&c;
// p[3]=&d;
// p[4]=&e;
// *p[0]=8;
// printf("%d\n",*p[0]);
// printf("%lu\n",sizeof(int * [10]));
// printf("%lu\n",sizeof(p[0]));
// int arr[10];
// int (* p) [10];
// //它是一个指针,指向一个数组的指针。
// p=&arr;
// //arr:表示数组第一个元素的第一个字节的地址 ,假设:101
// //&arr:表示数组的第一个字节的地址。假设:101
// //地址相同、类型不同
// printf("%p\n",p);
// p++;
// printf("%p\n",p);
// 练习:
// 1》int (*p)[10];
// int **q;
// int * x[10];
// p++; 是加多少?40个字节
// q++; 是加多少?8个字节
// x++; 是加多少?x表示的十数组,不可以自加;
// p++; 是加多少?40
// int a[10];
// int (*p)[10]=&a;
// printf("%d\n",p);//输出数组的第一个字节的地址;
// p++;
// printf("%d\n",p);//输出第二个数组的第一个字节数的地址,所以是家40;
// q++; 是加多少?8个字节。
// int **q;
// int *p;
// int a=1,b=2;
// p=&a;
// q=&p;
// *q=&b;
// printf("%d\n",q);//输出a的首地址;
// printf("%d\n",*p);//指针p储存了a的地址,q存储了指针p的地址,现在用*q修改了指针p的值,所以p存储了b得地址,所以p指向了b,所以*p等于b;
// q++;
// printf("%d\n",q);//指针q加一指,加了一个指针;
// 例子:
/* int *n;
int a[2];
n=a;
printf("%p\n",n);
n++;
printf("%p\n",n); //加了4个字节,n相当于加了一个整型数组元素也就是4个字节
int arr[10];
int (*p)[10];
p=&arr;
printf("%d\n",p);
p++;
printf("%d\n",p);//加了40个字节 p相当于加了一个数组
*/
// int a=0;
// int b=0;
// int * p;
// p = &a; //p指向变量a
// * p = 3;//*p=a所以a=3;b=0;
// printf("%d %d\n",a,b);
// int * * q;
// q = &p; //q指向指针p
// * q =&b;
// * p = 5;
// printf("%d %d\n",a,b);
// 例子:
/* int a=0;
int b=0;
int * p;
int * * q;
q = &p; //q指向指针p
* q =&b;
* p = 5;
printf("%d %d\n",a,b);
解释 因为a=b=0;
q=&p;==》q指向了p; *q=&b;==》p=&b 因为*p=5==》b=5;a=0;
*/
// int ar[5] = {1,2,3,4,5};
// int arr[3][3] = {1,2,3,4,5,6,7,8,9};
// list(ar, 5);
// printf("\n");
// void (* p) (int (* p)[3],int lenth)=mylist;
// p(arr, 3);
// int (* q)(int,int,int)=fun;
// int a = malloc(4);
// a=4;
// printf("%d\n",a);
// free(a);
char * ch = malloc(100);
// ch = "hello";
strcpy(ch, "hello world");
free(ch);
printf("%s\n",ch);
// free(ch);
}
return 0;
}
void list(int * p,int lenth)
{
for (int i=0; i
printf("%d ",p[i]);
}
}
void mylist(int (* p)[3],int lenth){
for (int i=0; i
for (int j=0; j<3; j++) {
printf("%d ",p[i][j]);
}
printf("\n");
}
}