c語言一維數組給指針賦值的例子(指針分類與void指針的賦值)
2023-05-25 16:21:18 1
c語言一維數組給指針賦值的例子?我們現在使用的絕大多數計算機都是馮諾依曼機,其核心就是「存儲程序控制」,數據和代碼都需要先加載到可尋址的內存在C語言中,數據和代碼分別通過變量名和函數名來尋址我們知道,指針是一個特殊的地址,特殊在於其需要有類型信息,由此,指針變量可以區分為數據指針變量和函數指針變量還有一種特殊的指針變量,稱為void*指針變量,其類型可以待定,在顯式地轉換為其它特定類型之前,只是一個單純的內存地址,所以void*指針變量也稱為泛型指針變量,,接下來我們就來聊聊關於c語言一維數組給指針賦值的例子?以下內容大家不妨參考一二希望能幫到您!

c語言一維數組給指針賦值的例子
我們現在使用的絕大多數計算機都是馮諾依曼機,其核心就是「存儲程序控制」,數據和代碼都需要先加載到可尋址的內存。在C語言中,數據和代碼分別通過變量名和函數名來尋址。我們知道,指針是一個特殊的地址,特殊在於其需要有類型信息,由此,指針變量可以區分為數據指針變量和函數指針變量。還有一種特殊的指針變量,稱為void*指針變量,其類型可以待定,在顯式地轉換為其它特定類型之前,只是一個單純的內存地址,所以void*指針變量也稱為泛型指針變量,。
#include #include void * memset(void *dst, int val, size_t count){ //assert(dst); // 這裡需要檢驗dst的有效性 char* ret = (char*)dst; // 內存按字節編址,char與1個字節長度一致 while (count--) { *ret = (char)val; } return dst;}int* add(int* a,int* b){ *a = *b; return a;}void* voidPointer(void *vp,int n){ int a = 33; int ar[5]; memset(ar,0,sizeof(ar)); int arr[] = {1,2,3,4,5}; vp = // void指針做左值,右值不需要做類型轉換 printf("%d\n",vp==&a); // 1 int *q = (int*)vp; // void指針做右值,需要做類型轉換 printf("%d %d\n",*(int*)vp,*q); // 33 33 vp = arr; printf("%d %d\n",*(arr 2),*((int*)vp 2)); // 3 3 int*(*fp)(int*,int*) = add; printf("%d\n",*fp(&a,arr 2)); // 7 vp = (int*(*)(int*,int*))*(void**) //printf("%d\n",*vp(&a,arr 2)); void* (*vfp)(void*,void*) = (void* (*)(void*,void*))add;//36 printf("%d\n",*((int*(*)(int*,int*))vfp)(&a,arr 2)); //39 int *var = (int*)malloc(sizeof(int)*n); return var;}int main{ void *vp = NULL; vp = voidPointer(vp,5); int *p = (int*)(vp); *p = 1; getchar; return 0;}
-End-
,