demo_3_3


  1 #define _CRT_SECURE_NO_WARNINGS 1
  2 #include 
  3 #include 
  4 #include <string.h>
  5 //void Swap(char* buf1, char*buf2,int width)
  6 //{
  7 // int i = 0;
  8 // for (i = 0; i < width; i++)
  9 // {
 10 // char tmp = *buf1;
 11 // *buf1 = *buf2;
 12 // *buf2 = tmp;
 13 // buf1++;
 14 // buf2++;
 15 // }
 16 //}
 17 //void bubble_sort(void*base, int sz, int width, int(*cmp)(void*e1,void*e2))
 18 //{
 19 // int i = 0;
 20 // //趟数
 21 // for (i = 0; i < sz - 1; i++)
 22 // {
 23 // //每一趟比较的对数
 24 // int j = 0;
 25 // for (j = 0; j < sz - 1 - i; j++)
 26 // {
 27 // //两个元素的比较
 28 // if (cmp((char*)base + j*width, (char*)base + (j + 1)*width)>0)
 29 // {
 30 // //交换
 31 // Swap((char*)base + j*width, (char*)base + (j + 1)*width>0);
 32 // }
 33 // }
 34 // }
 35 //}
 36 //int cmp_stu_by_age(const void*e1, const void* e2)
 37 //{
 38 // return ((struct Stu*)e1)->age - ((struct Stu*)e2)->age;
 39 //}
 40 //int cmp_stu_by_name(const void*e1, const void* e2)
 41 //{
 42 // //比较名字就是比较字符串
 43 // //字符串比较不能直接用><=来比较,应该用strcmp函数
 44 // return strcmp(((struct Stu*)e1)->name, ((struct Stu*)e2)->name);
 45 //}
 46 //void test()
 47 //{
 48 // int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
 49 // int sz = sizeof(arr) / sizeof(arr[0]);
 50 // //使用bubble_sort的程序员一定知道自己排序的是什么数据
 51 // //就应该知道如何比较待排序数组中的元素
 52 // bubble_sort(arr,sz,sizeof(arr[0]),cmp_int);
 53 //}
 54 //void test2()
 55 //{
 56 // struct Stu s[3] = { { "zhangsan", 20 }, { "lisi", 30 }, { "wangwu", 10 } };
 57 // int sz = sizeof(s) / sizeof(s[0]);
 58 // //bubble_sort(s,sz,sizeof(s[0],cmp_stu_by_age);
 59 //}
 60 //int main()
 61 //{
 62 // test();
 63 // test2();
 64 // return 0;
 65 //}
 66 //
 67 //int main()
 68 //{
 69 // int a[] = { 1, 2, 3, 4 };
 70 // printf("%d\n", sizeof(a));
 71 // printf("%d\n", sizeof(a + 0));
 72 // printf("%d\n", sizeof(*a));
 73 // printf("%d\n", sizeof(a + 1));
 74 // printf("%d\n", sizeof(a[1]));
 75 // printf("%d\n", sizeof(&a));
 76 // printf("%d\n", sizeof(*&a));
 77 // printf("%d\n", sizeof(&a + 1));
 78 // printf("%d\n", sizeof(&a[0]));
 79 // printf("%d\n", sizeof(&a[0] + 1));
 80 // return 0;
 81 //}
 82 //
 83 //int main()
 84 //{
 85 // char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
 86 // printf("%d\n", sizeof(arr));//sizeof计算的是数组大小,6*1=6个字节
 87 // printf("%d\n", sizeof(arr+0));//4/8 arr是首元素的地址,arr+0还是首地址的元素,地址大小是4/8个字节
 88 // printf("%d\n", sizeof(*arr));//1 arr是首元素的地址,*arr就是首元素(首元素地址解引用就是首元素),首元素的字符大小是1个字节
 89 // printf("%d\n", sizeof(arr[1]));//1
 90 // printf("%d\n", sizeof(&arr));//4/8 &arr虽是数组地址,但还是地址,地址大小是4/8个字节
 91 // printf("%d\n", sizeof(&arr+1));//4/8 &arr+1是跳过整个数组后的地址,地址大小是4/8个字节
 92 // printf("%d\n", sizeof(&arr[0]+1));//第二个元素的地址,是4/8个字节
 93 //}
 94 //
 95 //int main()
 96 //{
 97 // char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
 98 // printf("%d\n", strlen(arr));//随机值 没有\0 且\0不确定所以是随机值
 99 // printf("%d\n", strlen(arr + 0));//随机值
100 // printf("%d\n", strlen(*arr));//error
101 // printf("%d\n", strlen(arr[1]));//error
102 // printf("%d\n", strlen(&arr));//随机值
103 // printf("%d\n", strlen(&arr + 1));//随机值(与上一个有差值的变化,差6个)
104 // printf("%d\n", strlen(&arr[0] + 1));//随机值
105 //}
106 
107 //int main()
108 //{
109 // int a = 5;
110 // if (a++ < 6)
111 // a++;
112 // printf("%d\n", a);
113 // system("pause");
114 // return 0;
115 //}
116 
117 //int main()
118 //{
119 // char arr[] = "abcdef";
120 // printf("%d\n", sizeof(arr));
121 // printf("%d\n", sizeof(arr + 0));
122 // printf("%d\n", sizeof(*arr));
123 // printf("%d\n", sizeof(arr[1]));
124 // printf("%d\n", sizeof(&arr));
125 // printf("%d\n", sizeof(&arr + 1));
126 // printf("%d\n", sizeof(&arr[0] + 1));
127 // system("pause");
128 // return 0;
129 //}
130 
131 //int main()
132 //{
133 // char arr[] = "abcdef";
134 // printf("%d\n", strlen(arr));
135 // printf("%d\n", strlen(arr + 0));
136 // //printf("%d\n", strlen(*arr));
137 // //printf("%d\n", strlen(arr[1]));
138 // printf("%d\n", strlen(&arr));
139 // printf("%d\n", strlen(&arr + 1));
140 // printf("%d\n", strlen(&arr[0] + 1));
141 // system("pause");
142 // return 0;
143 //}
144 
145 //int main()
146 //{
147 // char *p = "abcdef";
148 // printf("%d\n", sizeof(p));
149 // printf("%d\n", sizeof(p + 0));
150 // printf("%d\n", sizeof(*p));
151 // printf("%d\n", sizeof(p[0]));
152 // printf("%d\n", sizeof(&p));
153 // printf("%d\n", sizeof(&p + 1));
154 // printf("%d\n", sizeof(&p[0] + 1));
155 // system("pause");
156 // return 0;
157 //}
158 //
159 //int main()
160 //{
161 // char *p = "abcdef";
162 // printf("%d\n", strlen(p));
163 // printf("%d\n", strlen(p + 0));
164 // printf("%d\n", strlen(*p));
165 // printf("%d\n", strlen(p[0]));
166 // printf("%d\n", strlen(&p));
167 // printf("%d\n", strlen(&p + 1));
168 // printf("%d\n", strlen(&p[0] + 1));
169 // system("pause");
170 // return 0;
171 //}
172 //
173 //int main()
174 //{
175 // int a[3][4] = { 0 };
176 // printf("%d\n", sizeof(a));
177 // printf("%d\n", sizeof(a[0][0]));
178 // printf("%d\n", sizeof(a[0]));
179 // printf("%d\n", sizeof(a[0]+1));
180 // printf("%d\n", sizeof(*(a[0]+1)));
181 // printf("%d\n", sizeof(a+1));
182 // printf("%d\n", sizeof(*(a+1)));
183 // printf("%d\n", sizeof(&a[0]+1));
184 // printf("%d\n", sizeof(*(&a[0]+1)));
185 // printf("%d\n", sizeof(*a));
186 // printf("%d\n", sizeof(a[3]));
187 // system("pause");
188 // return 0;
189 //}
190 //
191 //int main()
192 //{
193 // int a[5] = { 1, 2, 3, 4, 5 };
194 // int *ptr = (int*)(&a + 1);
195 // printf("%d,%d\n", *(a + 1), *(ptr - 1));
196 // system("pause");
197 // return 0;
198 //}
199 
200 //struct Test
201 //{
202 // int Num;
203 // char *pcName;
204 // short sDate;
205 // char cha[2];
206 // short sBa[4];
207 //}* p;
208 //int main()
209 //{
210 // printf("%p\n", p + 0x1);
211 // printf("%p\n", (unsigned long)p + 0x1);
212 // printf("%p\n", (unsigned int*)p + 0x1);
213 // system("pause");
214 // return 0;
215 //}
216 //
217 //int main()
218 //{
219 // int a[4] = { 1, 2, 3, 4 };
220 // int *ptr1 = (int *)(&a + 1);
221 // int *ptr2 = (int *)((int)a + 1);
222 // printf("%x,%x\n", ptr1[-1], *ptr2);
223 //}
224 
225 int main()
226 {
227 int a[2][3] = { (0, 1), (2, 3), (4, 5) };
228 int *p;
229 p = a[0];
230 printf("%d\n", p[0]);
231 system("pause");
232 return 0;
233 }
234 
235 int main()
236 {
237 int a[5][5];
238 int(*p)[4];
239 p = a;//int (*)[4] != int (*)[5]
240 printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
241 system("pause");
242 return 0;
243 }