実践コード - ポインタ

# include <stdio.h> 
int main()
{
	int num = 1024;	//整型变量
	int * ptr_num;	//整型指针变量
	ptr_num = &num;	//取num的地址赋值给ptr_num变量
	printf("num的值为:\n%d\n",num);
	printf("num的内存地址为:\n%p\n",&num);
	printf("ptr_num的值为:\n%p \n",ptr_num);
	printf("ptr_num的内存地址为:\n%p \n",&ptr_num);
	printf("*ptr_num指向的值为:\n%d\n",*ptr_num);
	return 0;
}


指针的赋值
	
# include<stdio.h>
int main()
{
	int num1 = 1024;
	int num2 = 2048;
	int * ptr_num1;
	int * ptr_num2;
	ptr_num1 = &num1;
	ptr_num2 = &num2;
	printf("num1的值是:%d\t num1的地址是%p\n",num1,ptr_num1);
	printf("num2的值是:%d\t num1的地址是%p\n", num2, ptr_num2);
	printf("\n");
	//将变量num1的值 赋给变量num2
	//num2 = num1;	//最简单的方法:
	*ptr_num2 = *ptr_num1;  //等价于 num2 =  num1;
	printf("重新赋值后:\n");
	printf("num1的值是:%d\t num1的地址是%p\n", num1, ptr_num1);
	printf("num2的值是:%d\t num1的地址是%p\n", num2, ptr_num2);
	printf("\n");
	ptr_num2 = ptr_num1; //num1的地址赋给了num2
	printf("重新赋值(地址)后:\n");
	printf("num1的值是:%d\t num1的地址是%p\n", num1, ptr_num1);
	printf("num2的值是:%d\t num1的地址是%p\n", num2, ptr_num2);
	printf("\n");
	
	* ptr_num2 = 100000;
	printf("num1的值是:%d\t num1的地址是%p\n", num1, ptr_num1);
	printf("num2的值是:%d\t num1的地址是%p\n", num2, ptr_num2);

	return 0;
}

小结 
1、指针就是一个变量,用来存放另一个变量的地址
int num = 10;
int * ptr_num;
*ptr_num =  &num;

int * ptr_num2;
ptr_num2 = ptr_num;   两个指针都指向了同一块内存
*ptr_num2 = 99; 等价于 num =99;


//数组

# include<stdio.h>
int main()
{
	//数组名就是数组的首地址
	int i;
	double score[] = {98,87,65,43,21};
	double * ptr_score = score;
	printf("数组的首地址:%p\n数组首元素的地址:%p\n",score,&score[ 0 ]);
	for (i = 0; i < 5; i++)
	{
		//printf("%.2lf\n",score[i]);
		printf("%.2lf\n",* (ptr_score + i));
	}
	return 0;
}

# include<stdio.h>
int main()
{
	int array[] = { 15,20,25,30,35 };
	int i;
	int* ptr_array = array;

	for (i = 0; i < 5; i++)
	{
		printf("第%d个元素的值为%d\t地址为:%p \n", i + 1,*ptr_array,ptr_array);
		ptr_array++;	
	}
	return 0;
}

 

 

公開された16元の記事 ウォンの賞賛2 ビュー132

おすすめ

転載: blog.csdn.net/weixin_42248871/article/details/105219695