栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C指针笔记

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C指针笔记

变量实质

声明两个变量,其中整形变量i占两个字节,字符型a占一个字节。

int i;
char a;

实际在内存中的映像如图

变量赋值

赋值给变量,即是将该值赋给相应的地址中

i=30;
a='t';


如此,我们可以通过代码打印查看变量与它的地址

#include
int main ()
{
	int i = 39;
	printf ("%dn" , i);
	printf ("%dn", &i) ;
	return(0) ;
}

指针

声明指针变量pi

int *pi;

则内存映射为

可以看出pi不过是在内存的某个地方声明一个一定宽度的内存空间。
将变量i的地址编号赋给pi指针

pi=&i;//i的地址为6、7


现在的情况就是:i是一个变量,pi指向了变量i,pi是i变量的地址编号相当于&i,而*pi则是读取i的存储的地址的值。
使用代码打印进行对比

#include
int main ()
{
	int i = 39;
	int *pi;
	pi=&i;//i的地址为6、7
	printf ("--值--n", &i) ;
	printf ("%dn" , i);
	printf ("%dn", *pi) ;
	printf ("--地址--n", &i) ;
	printf ("%dn", &i) ;
	printf ("%dn", pi) ;
	return(0) ;
}


所以我们可以通过改变指针pi来改变所指的地址内的变量值。

char a , *pa;
a=10;
pa = &a;
*pa = 20;
通过数组名访问数组元素

使用数组名(首地址)和普通方式访问数组元素,效果一致

#include
int main ()
{
	int i, a[] = { 3,4,5,6,7,3,7,4,4,6};
	for (i = 0; i <=9; i++)
		printf("%dn", * (a+i) );
	printf("--数组元素--n");
	for (i = 0; i <=9; i++)
		printf("%dn", a[i] );
	return(0) ;
}

通过指针访问数组元素
#include
int main ()
{
	int i, *pa,a[] = { 3,4,5,6,7,3,7,4,4,6};
	pa=a;
	for (i = 0; i <=9; i++)
		printf("%dn", pa[i] );
	printf("--赋值数组名--n");
	for (i = 0; i <=9; i++)
		printf("%dn",*(pa+i) );
	return(0) ;
}

数组名与指针变量的区别

数组名与指针变量还是有所区别的,数组名只是一个指针常量,而指针是指针变量。

#include
int main ()
{
	int i,*pa,a[]= {3,4,5,6,7,3,7,4,4,6};
	pa =a;
	for (i = 0; i <=9; i++)
	{
		printf("%dn",*pa);
		pa++;
	}
	return(0) ;
}

上述代码中,pa换成a是无法正常编译的

const int i

const声明定义的称为符号常量,后期不能进行修改其值。有两种写法:

const int ic = 20;//等同于
int const ic = 20;

const定义的*pi是不可修改的,但是pi是可以修改的

#include
int main ()
{
	int il = 30;
	int i2 = 40;
	const int *pi = &il;
	pi = &i2;
	i2 = 80;
	printf("%dn",*pi);
	return(0);
}
int *const pi与int const *pi
int *const pi,可以改变*pi,不能改变pi
int const *pi,可以改变pi,不能改变*pi
#include
int main ()
{
	int il = 30;
	int i2 =40;
	int *const pi = &il;

	

	il = 80;
	
	printf("%d",*pi);
	return(0);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号