前言
指针对于很多人来说非常的难!但是!!!难就不学吗???嗯嗯我看行 当然不行啦!指针难但是在C语言中它的地位是非常高的,也很重要,当你学到这里时发现自己学不下了,你应该告诉自己:(还有比这更难的!)熬一熬你会发现其中的趣味!趣味!?! 接下来和我一起学叭
正文
一 指针概念(小题)
1.指针变量是用来存放地址的变量
二 指针运算
1、程序如下
int main()
{
unsigned long pulArray[] = { 6,7,8,9,10 };
unsigned long* pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d,%d\n", *pulPtr, *(pulPtr + 3));
return 0;
}
此处使用画图法分析该题(注意:解题最好使用画图,会更好的帮助理解)
数组名puIArray是数组首元素的地址,把一个地址赋给puIPtr后,puIPtr则指向6的地址,解引用后得到6,若puIPtr+3则指向9的地址,此时解引用后为9,再使得该处的值加3后的12,最后打印的结果即为6,12 可自行复制代码执行验证结果。
2、使用指针打印一个整型数组
题目:写一个函数打印arr数组的内容,不使用数组下标,使用指针
#include<stdio.h>
int main()
{
int arr[] = {1,2,3,4,5};
int sz = sizeof(arr) / sizeof(arr[0]);
int* p = arr;
for (int i = 0; i < sz; i++)
{
printf("%d ", *(p + i));
}
return 0;
}
执行结果
3、指针笔试题
3.1
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int *)(&a + 1);
printf( "%d,%d", *(a + 1), *(ptr - 1));
return 0;
}
//程序的结果是什么?
结果是 2,5
这道题依旧是选择画图(画图会很好理解)
3.2
结果:4,2000000
3.3
int main()
{
int a[3][2] = { (0, 1), (2, 3), (4, 5) };
int* p;
p = a[0];
printf("%d", p[0]);
return 0;
}
这一道题很容易错!看好啦,这个数组这里的写法有点混人眼
以上就先到这里啦 还有几道比较难的 下次再写了~