Appearance
指针相关
指针函数与函数指针
指针函数全称为返回指针的函数。
函数指针是指向函数的指针。如int (*ptr)(int, int)=&add;将add函数的地址赋予ptr,并指定了参数类型和返回值类型。
完整示例:
C
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b) {
return a + b;
}
/*指针函数:返回指针的函数*/
int *genMem(){
int *p = (int *)malloc(sizeof(int)*10);
p[4]=123415;
return p;
}
int main(void){
/*函数指针*/
int (*addFunc)(int,int) = &add;
printf("%d\n",addFunc(1,2));
int *pMem=genMem();
printf("%d\n",pMem[4]);
free(pMem);
int arr[10]={1,2,3,4,5,6,7,8,9,10};
/*数组指针:指向数组的指针,本质是指针,需要通过*p得到数组*/
int (*pArr)[10]=&arr;
printf("%d\n",(*pArr)[4]);
return 0;
}Makefile
OBJS=main.o
TARGET=main
#Makefile自动推导
#main.o自动推导出main.c,并得到生成命令为${CC} -c main.c -o main.o
${TARGET}: ${OBJS}
clean:
${RM} ${OBJS}结论:XX指针是指针,XX函数是函数,XX数组是数组,不论前面加了什么修饰,本质都是后缀词所表示的含义。
指针变量大小
和编译器位数有关,编译器针对的是目标机器cpu的位数,32位编译器编译的指针大小为32/8=4个字节,64位编译器编译的指针大小为64/8=8个字节。