概述
指针
概念
-
计算机中所有的数据都必须存放在内存中,不同数据类型的数据占用的字节数不一样。为了正确的访问这些数据,必须为每个字节都编上号码,我们把这些编号称为地址或指针。
-
在C语言中,将地址形象的称为“指针”。一个变量的地址称为变量的”指针“。一个专门用来存放另一个变量的地址的变量,则称它为”指针变量“。
-
地址: 操作系统的寻址空间编号,也就是操作系统给每个存储单元分配了统一的编号。
-
32bit平台下,地址总线32位,所以地址编号32位编号,指针变量就是32位即4字节。其范围就是0x0000 0000 - 0xFFFF FFFF注:
注:1. 无论什么类型地址,都是存储单元的编号,在32bit下都是4字节,即任何类型的指针变量都是4字节
2. 对应的类型的指针变量,只能存放对应类型变量的地址
指针运算符
-
指针变量中只能存放地址,与指针相关的两个运算符是&(取地址运算符)和*(取值运算符)。
-
地址采用取值运算符*会得到地址对应的变量,而变量使用取地址运算符&会得到该变量对应的地址,可以存放到指针变量中。两个符号同时使用会相互抵消。
接下来下面是两个数组练习题:
1.计算不同数字出现的次数
#include<stdio.h>
int judge(int arr[], int length)
{
int i, j, count = 0;
int arr1[10] = {0};
int arr2[10] = {0};
//找出不同的数,并放入数组arr1中
for(i = 0; i < length; i++)
{
int flag = 0;
for(j = 0; j < length; j++)
{
if(arr[i] == arr1[j])
{
flag = 1;
break;
}
}
if(flag == 0)
{
arr1[count] = arr[i];
count++;
}
}
//统计不同数的个数,放到数组arr2中
for(i = 0; i < length; i++)
{
int count1 = 0;
for(j = 0; j < length; j++)
{
if(arr1[i] == arr[j])
{
count1++;
}
}
arr2[i] = count1;
}
//遍历不同数出现的次数
for(i = 0; i < count; i++)
{
printf("%d出现了%d次n",arr1[i],arr2[i]);
}
printf("n");
return 0;
}
int main()
{
int arr[10] = {0},i = 0;
printf("请输入1-100之间的整数:");
while(1)
{
scanf("%d",&arr[i]);
if(arr[i] == 0)
{
break;
}
else
{
i++;
}
}
judge(arr,10);
return 0;
}
2.判断数组中是否存在4个连续相同的数
#include<stdio.h>
#define N 5
int i;
void scan_arr(int arr[], int length)
{
for(i = 0; i < length; i++)
{
scanf("%d",&arr[i]);
}
}
void judge(int arr[], int length)
{
int count = 0;
for(i = 0; i < length-1; i++)
{
if(arr[i] == arr[i+1]){
count++;
if(count >= 3)
{
break;
}
}
else
{
count = 0;
}
}
if(count >= 3)
{
printf("数组中有4个连续相同的数n");
}
else
{
printf("数组中没有4个连续相同的数n");
}
}
int main()
{
int arr[5] = {0},i;
printf("请输入5个整数:n");
scan_arr(arr,5);
judge(arr,5);
return 0;
}
最后
以上就是火星上枕头为你收集整理的C语言入门12指针的全部内容,希望文章能够帮你解决C语言入门12指针所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复