#include <stdio.h> #include <stdlib.h> #include <string.h> void get(char **num,size_t len) { if (num != NULL) { *num = (char*)malloc(len); } } void set(int** arr, int len) { if (arr != NULL) { *arr = (int*)malloc(len * sizeof(int)); for (int i = 0; i < len; i++) { *(*arr + i) = i; } } } /************************************************************************/ /* 給指針數組賦值 . 直接當成數組數據. */ /************************************************************************/ void setter(int** arr, int len) { for (int i = 0; i < len; i++) { *arr[i] = i; } } int main() { char* a = NULL; //用一個指針代替一個指針數組.申請空間. int* b = {NULL}; // 若是這麼申明瞭, 空間必定是被申請好了. int* c[5] = { NULL }; get(&a,100); memset(a, 0, 100); strncpy(a,"zhangchao",strlen("zhangchao")); printf("%s\r\n", a); free(a); set(&b, 100); for (int i = 0; i < 100;i++) { printf("%d\r\n", *(b + i)); } free(b); for (int i = 0; i < 5; i++) { *(c + i) = (int*)malloc(sizeof(int)); **(c + i) = i; } for (int i = 0; i < 5; i++) { printf("%d\r\n",**(c+i)); free(*(c + i)); } setter(c, 5); printf("直接處理數組的方式\r\n"); for (int i=0;i<5;i++) { printf("%d \r\n", **(c + i)); } return 0; }