当前位置:首页 » 编程语言 » c语言指针集

c语言指针集

发布时间: 2025-05-24 12:18:03

‘壹’ C语言中:数组指针与指针数组有什么区别

数组指针是指向这个数组首地址的指针,指向对象是这个数组;
指针数组是存放一类指针的数组,这个数组的每个元素都是一个指针;
例子:
int a[10];
int* s;
s = a;//这里s就是一个数组指针,它的值就是数组a 的首地址;当然,如果a是一个整数,那s就是一个指向整型的指针;

int a;
int* s[5];
for(int i=0;i<5;i++)s[i]=a;
//这里s就是一个指针数组,它的每个元素都是整型变量a的地址
应该算比较明白了吧
谢楼上提醒

‘贰’ C语言数组指针

int (*pstu)[4];为指向有4个元素的数组的指针

int* getPosPerson(int pos, int (*pstu)[4]);为返回值为指针的函数

注意这是指针函数,而不是函数指针,后者为指向函数的指针变量,两者含义是不同的

(类似指针数组和数组指针,两者含义也是不同的,一个本质是数组,一个本质是指针)

调用该函数的语句为:ppos =getPosPerson(pos,scores);

传入的scores表示3行4列的二维数组首行数组的地址,即&scores[0]

调用后相当于int (*pstu)[4]=scores,所以在getPosPerson中pstu与scores是等价的

即pstu可看作&scores[0],那么pstu+pos也就等价于scores+pos,等价于&scores[pos]

即返回了指向&scores[pos](也就是scores第pos+1行的地址)的指针

返回该行指针ppos后,就可以查看该行表示的学生的4科成绩了

‘叁’ C语言选择题,关于指针数组。求详解

int a[2][3]; 定义了一个二维函数,每一维数组有三个元素。
int (*pt)[3]; 定义了一个数组指针,也就是定义了一个指向有三个元素的指针,即该指针,每次自加1,地址跳过三个int
pt=a; 就是让pt指向a[0],注意a[0]是一个数组地址,里面有三个元素
对于A选项,pt[0][0]是正确的,pt[0][0]等价于a[0][0]
对于B选项,不正确,因为pt+1就是a[1], *(pt+1)[2]相当于a[3][0]不对。
因为运算符优先级,[]大于*,因此*(pt+1)[2]就是*pt[1+2] 也就是*a[1+2]。而*a[3]就等价于a[3][0]。越界了
改成(*(pt+1))[2]就对了,相当于a[1][2]
对于C选项,正确,*(pt[1]+2) 相当于a[1][2]
对于D选项,正确,*(a[0]+2)相当于a[0][2]

热点内容
x86x64体系探索及编程 发布:2025-05-24 17:15:06 浏览:129
局域网vpn服务器搭建 发布:2025-05-24 17:10:33 浏览:191
c语言算法复杂度 发布:2025-05-24 17:00:38 浏览:50
游戏脚本是什么 发布:2025-05-24 16:33:05 浏览:733
wifi代理服务器地址 发布:2025-05-24 16:25:20 浏览:866
安卓浏览器下载的文件在哪里找到 发布:2025-05-24 15:52:18 浏览:148
服务器所在主机的ip地址 发布:2025-05-24 15:45:52 浏览:983
本田crv空调压缩机 发布:2025-05-24 15:30:52 浏览:726
编译程序框架图 发布:2025-05-24 15:30:05 浏览:239
微云如何加密 发布:2025-05-24 15:24:37 浏览:261