C语言 常见数据类型总结

Q: 关于数据声明的8个应用

路过的可以尝试下:

题目:用变量a或p给出下面的定义
1、一个整型数(An integer)
2、一个指向整型数的指针( A pointer to an integer)
3、一个指向指针的的指针,它指向的指针是指向一个整数( A pointer to a pointer to an intege)
4、一个有3个整型数的数组( An array of 10 integers)
5、一个有3个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
6、 一个指向有3个整型数数组的指针( A pointer to an array of 10 integers)
7、 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
8、一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

参考链接 :野火每日一题的数据声明

A: 解析

【1】int a;
a是整形类型的变量。
【2】int *p; p是指针类型的变量。p的内容是地址。访问这个地址里的内容的时候的访问方式是int访问方式。
【3】二维指针 int **p;(指针类型是一种类型,地址是指针类型的,但是指针不是地址。
在这里插入图片描述

int *p = &c;
int **q = p;
                    p = 0x00001000;   *p = c;   
q = 0x20000000;    *q = 0x0001000;    **q = c;

【4】int a[3];
【5】int *p[3];
指针类型的数组(二维数据) : 数组p有三个元素,每个元素中存放的都是(首)地址。 列子在最后面
在这里插入图片描述
二维数据举例:
二维数据举例
【6】int (*p)[3];
数组型的指针 p是有三个int类型 指针的变量。 可以指向于 int a[2][3]的 ‘a’ 则p+1= a[1][]; p是指针指向包含3个元素的一维数组的指针变量。
在这里插入图片描述
【7】int (*p)(void);
(晚些补充)
函数指针 函数指针 数组 p是指针类型的变量,这个变量的访问方式是函数的方式。

【8】数组指针函数
(晚些补充)

【9】int *p(void);
(晚些补充)
指针函数 指针函数 返回值是指针类型的函数

【A】回调函数

typedef int (*math_t)(int int);  //math指针类型 指向函数的指针(函数的入口地址)

int add(int a, int b)
{
     return a+b;
}

int process(math_t p,int m,int n)
{
     return p(x,y);
}

void main(void)
{ 
     int a=8; b=2;
     math_t m[4] = {add, sub, div, mul};
     printf("a+b=%d\n", process(add,a,b));
     printf("a-b=%d\n", process(m[1],a,b));
}

官方答案

扫描二维码关注公众号,回复: 10180982 查看本文章
发布了14 篇原创文章 · 获赞 9 · 访问量 1579

猜你喜欢

转载自blog.csdn.net/qq_16504163/article/details/104739949