C语言之指针、数组和函数.docVIP

  • 2
  • 0
  • 约1.82千字
  • 约 6页
  • 2017-08-23 发布于河南
  • 举报
C语言之指针、数组和函数 本解释   1、指   2、数“可”,所以我动态内存。   3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。      听char a[]与char *a是一致的,是不是   答案与分析:   指 char a[] = Hi, pig!; char *p = Hi, pig!;   上述两个变量的内存布局分别如下:   数a需要在内存中占用8个字a来p则需要4个字4个字p来p指向某地8个字“Hi, pig!”。   另外,例如:a[2]和p[2],二者都返回字符‘i’,但是a[2],a的位置2两个字p[2],p的位置取出一个地址,在其上加2,然后取出         答案与分析:   使用指   定义例子如下: int (*pElement)[2]。   下面是一个例子: int array[2][3] = {{1,2,3},{4,5,6}}; int (*pa)[3]; //定 pa = array[0]; // 符号能pa的含 printf (%d, (*pa)[0]); //将打印array[0][0],即1 pa++; // 猜一猜,它指向array[1]? printf (%d, (*pa)[0]); // 将打印array[1][0],即4   上述这个例子充分说明了数组指针—一   需要pa++将整个向后移   问题:指针数组   有如下定 struct UT_TEST_STRUCT *pTo[2][MAX_NUM];   请分析这个定义的意义,并尝试说明这样的定义可能有哪些好处?   答案与分析:   前面我   数 int (*pA)[5]。   指int *pA[5]。   至于上述指   a)、各个指   b)、各个指   在 问题:指向指针的指针   在做一个文本   答案与分析:   首先,我灵活性。         就横向而言,因   就   下面的代码演示了这种动态数组的用途: // 用于从文件中 \0结尾的字符串的函数 extern char *getline(FILE *pFile); FILE *pFile; char **ppText = NULL; // 二 char *pCurrText = NULL; // 指向当前 ULONG ulCurrLines = 0; ULONG ulAllocedLines = 0; while (p = getline(pFile)) {  if (ulCurrLines = ulAllocedLines)  {   // * 当前realloc对其进行扩展。   ulAllocedLines += 50; // 50行。   ppText = realloc (ppText, ulAllocedLines * (char *));   if (NULL == ppText)   {    return; // 内存分配失   }  }  ppText[ulCurrLines++] = p; // 横向“”,指向不定 }   问题:指针数组与数组指针与指向指针的指针   指特征:   指   数   下面使用高    多:各a[10][40]。    数a[x][40]。    指a[10][y]。    指向指a[x][y]。      假a,a和a的区   答案与分析:   a == a == a[0],数a不占用存(非字符串)首地址的地方,我一般使用a[0],使用a容易和指a容易和非指   区a的直接引用将a的 int a[2] = {1, 2}; int *p = 0; p = a; /* p指向a[0]所在的地方 */ x = *p; /* x = a[0] = 1*/ p = a; /* */ /*显示整数指针与整数数组指针不一样 */   问题:函数指针与指针函数      int *pF1(); int (*pF2)();   答案与分析:   首先清楚它    指    函数指   可知:    pF1是一个指int型数据的指    pF2是一个函数指

文档评论(0)

1亿VIP精品文档

相关文档