WinForms开发中的死锁问题与解决方案
2026/11/3 11:42:10
int main() { char ch = 'w'; char *pc = &ch; *pc = 'w'; return 0; }int main() { const char* pstr = "hello bit."; printf("%s\n", pstr); return 0; }#include <stdio.h> int main() { char str1[] = "hello bit."; char str2[] = "hello bit."; const char* str3 = "hello bit."; const char* str4 = "hello bit."; if (str1 == str2) printf("str1 and str2 are same\n"); else printf("str1 and str2 are not same\n"); if (str3 == str4) printf("str3 and str4 are same\n"); else printf("str3 and str4 are not same\n"); return 0; }int (*p)[10];int arr[10] = {0}; &arr;//得到的就是数组的地址可见p和&arr的地址是一样的
int (* p) [10] = &arr; | | | | | | | | p指向数组的元素个数 | p是数组指针变量名 p指向的数组的元素类型有⼀个⼆维数组的需要传参给⼀个函数的时
#include <stdio.h> void test(int a[3][5], int r, int c) { int i = 0; int j = 0; for (i = 0; i < r; i++) { for (j = 0; j < c; j++) { printf("%d ", a[i][j]); } printf("\n"); } } int main() { int arr[3][5] = { {1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7} }; test(arr, 3, 5); return 0; }#include <stdio.h> void test(int (*p)[5], int r, int c) { int i = 0; int j = 0; for (i = 0; i < r; i++) { for (j = 0; j < c; j++) { printf("%d ", *(*(p + i) + j)); } printf("\n"); } } int main() { int arr[3][5] = { {1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7} }; test(arr, 3, 5); return 0; }#include <stdio.h> void test() { printf("hehe\n"); } int main() { printf("test: %p\n", test); printf("&test: %p\n", &test); return 0; }输出结果如下:
#include <stdio.h> void test() { printf("hehe\n"); } void (*pf1)() = &test; void (*pf2)() = test; int Add(int x, int y) { return x + y; } int(*pf3)(int, int) = Add; int(*pf3)(int x, int y) = &Add;//x和y写上或者省略都是可以的int (*pf3) (int x, int y) | | ------------ | | | | | pf3指向函数的参数类型和个数的交代 | 函数指针变量名 pf3指向函数的返回类型 int (*) (int x, int y) //pf3函数指针变量的类型#include <stdio.h> int Add(int x, int y) { return x+y; } int main() { int(*pf3)(int, int) = Add; printf("%d\n", (*pf3)(2, 3)); printf("%d\n", pf3(3, 5)); return 0; }输出结果为:5和8
(*(void (*)())0)();void ( *signal(int , void(*)(int)) )(int);typedef unsigned int uint; //将unsigned int 重命名为uinttypedef int* ptr_t;typedef int(*parr_t)[5]; //新的类型名必须在*的右边typedef void(*pfun_t)(int);//新的类型名必须在*的右边int * arr[10]; //数组的每个元素是int*int (*parr1[3])(); int *parr2[3](); int (*)() parr3[3];