小甲鱼 P22 P23 指针和数组

指针和数组

1.数组名是数组第一个元素的地址

2.数组地址=数组名=数组第一个元素的地址

3.指向数组的指针

char *p;

p=a;

p=&a[0];

4.p+1并不是简单地将地址加1,而是指向数组的下一个元素

指针和数组的区别

字符指针变量是一个左值,数组名是地址常量

实验一:判断有多少个字符:

#include <stdio.h>
int main(void)
{
	char str[] = "I love FishC.com!";
	char *target = str; 
	int count = 0;
	
	//左值同时还必须是可改变的 
	//先运算++,再运算* 
	
	//字符指针变量是一个左值 
	//数组名是一个地址常量 
	//下面的语句不能写成:while (*str++ != '\0')
	while (*(target++) != '\0')
	{
		count++;
	}
	printf("总共有%d个字符!\n", count);
	return 0;
}

指针数组和数组指针

指针数组:是一个数组(int *p1[5]),优先级:[]  >  *    (指针的数组)

结论:指针数组是一个数组,每个数组元素存放一个指针变量

实验二:整形指针数组:将整形变量赋值到指针整形数组里,然后打印出来

#include <stdio.h>

int main()
{
	int a = 1;
	int b = 2;
	int c = 3;
	int d = 4;
	int e = 5;
	//指针数组 
	int *p1[5] = {&a, &b, &c, &d, &e};
	int i;
	
	for(i = 0; i < 5; i++)
	{
		printf("%d\n", *p1[i]);
	}
	
	return 0;
}

实验三:字符指针数组:打印指针字符数组里面的数据

#include <stdio.h>

int main()
{
	//指针字符数组 
	char *p1[5] = {
		"让编程改变世界",
		"Just do it -- NIKE",
		"一切皆有可能 -- 李宁",
		"永不止步 -- 安踏",
		"One more thing -- 苹果", 	
	};
	int i;
	
	for (i = 0; i < 5; i++)
	{
		printf("%s\n", p1[i]);	
	} 
	
	
}

数组指针:是一个指针 int(*p2)[5];(数组的指针)

结论:数组指针是一个指针,它指向的是一个数组

数组指针:数组名的指针,即数组首元素的指针(可以理解为指向指针的指针)

实验四:数组指针

#include <stdio.h>

int main()
{
	int temp[5] = {1, 2, 3, 4, 5};
	//数组指针 :数组名的指针,即数组首元素地址的指针(可以理解为指向指针的指针) 
	int (*p2)[5] = &temp; 
	int i;
	
	for(i = 0; i < 5; i++)
	{
		printf("%d\n", *(*p2 + i));
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/xiaodingqq/article/details/82594796