c语言指针
感觉c语言指针越学越迷糊 多看,多用 乐乐学编程 发表于 2020-10-27 14:33多看,多用
嗯 一个小程序,帮助你理解:
#include<stdio.h>
int main()
{
int i,j;
int (*q);
int a = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23}};
q = a;
for (i = 0; i < 3;i++) // i 控制的是行
{
for (j = 0; j < 4;j++) // j 控制的是列
{
printf("%2d ", *(*(q + i) + j)); // 输出 i 行 j 列的元素值
}
printf("\n");
}
printf("\n");
printf("第 0 行的首地址: %p\n",*(q + 0) + 0); // 输出第 0 行的首地址
printf("第 1 行的首地址: %p\n",*(q + 1) + 0); // 输出第 1 行的首地址
printf("第 2 行的首地址: %p\n",*(q + 2) + 0); // 输出第 2 行的首地址
printf("\n");
} 试想一下,你需要从新疆库车去一个陌生的地方取回一个金元宝,你却不知道应该怎么走,具体路线被事先放在一些沿途节点的信箱里。于是,你先打开了位于库车的信箱,只见信中写着“乌鲁木齐”,到了乌鲁木齐,打开信箱,信中写着 “甘肃兰州”,到了甘肃兰州,打开信箱,信中写着 “陕西西安”,到了陕西西安,打开信箱,信中写着 “河南郑州”,到了河南郑州,打开信箱,信中写着 “北京天坛”,最后,在上述一些列向导的指引下,你终于在北京天坛指定的位置,拿到了金元宝。
在这个例子中,这些沿途的信箱里面保存的并不是元宝,而是目的地的地址,也就是指向元宝的指针的指针(最后一个信箱里面存放的是指向元宝的指针),根据它们提供的线索追踪,最后可以找到目标金元宝。
页:
[1]