No 1.
int (*func_p)(double)
解读:
func_p首先是一个函数指针.
func_p是一个指向参数为double,返回值为int的函数指针.
No 2.
int *hoge[10]
hoge是一个指向int的指针的数组(元素个数为10)
No 3.
double (*array_p)[3]
array_p是指向double(元素个数为三)的数组的指针
array_p = &array;这样赋值没有问题,因为类型相同。
如果array_p=array编译器就会发出警告,提示如下:
指向int的指针和指向int的数组(元素个数3)的指针是完全不同的数据类型.
No 4.
int (*func_table[10])(int a)
指向返回int的函数(参数类型是int)的指针的数组(元素个数为10)
范例:
/*
Name: 函数指针数组
Copyright: 52coder.net
Author: 52coder
Date: 03/06/17 17:24
Description: pointer
*/
#include <stdio.h>
#include <stdlib.h>
int func(int a)
{
printf("function func\n");
return a;
}
int main()
{
int (*func_table[10])(int a);
func_table[0]=func;
func_table[0](2017);
func_table[1]=func;
func_table[1](2018);
return 0;
}
No 5.
C语言中不存在多维数组.
对于如下声明:
int hoge[3][2];
解读为:数组hoge有2个元素,元素类型是int
No.6
左值与右值的区别
表达式代表某处的内存区域的时候,我们称当前的表达式为左值,相对的是表达式只是代表值的时候,我们称当前的表达式为右值.