原始标题:声明c语言指针变量
在c语言中,变量的地址往往由编译系统自动分配,对我们用户来说,我们不知道某个变量的具体地址。 因此,定义p,将通常的变量a的地址直接发送给指针变量p的是p=a的写法。
指针变量p的定义和初始化一般有两种方式。 这两种方式,初学者很容易混淆,所以这个地方没有别的办法。 请死记硬背记住。
方法1 :定义时直接进行初始化赋值。
unsigned char a;
unsigned char *p=a;
方法2 :定义后赋值。
unsigned char a;
无符号字符* p;
p=a;
仔细一看,就知道这两种写法的不同。 那些都是正确的。 在定义的指针变量之前添加了*。 此*p表示此p是指针变量,不是普通变量。 它专门用于存储变量的地址。 另外,在定义*p时,使用unsigned char进行了定义,这里表示该指针所指的变量类型为unsigned char型。
指针变量似乎很容易理解,大家也能很容易地听到。 但是为什么很多人不能理解指针呢? C语言有一些运算和定义,所以他们有区别。 很多同学如果不知道其中的区别,就不能很好地掌握指针。 这里重点强调两者的区别。 一旦理解了这两者的区别,至少指针变量这个部分就不是问题了。 这两个要点现在大家死记硬背,直接记住就可以了,有可能因为理解而混淆概念。
第一个重要差异:指针变量p和普通变量a之间的差异。
既可以定义变量a,同时将a=1代入变量a,也可以代入a=2。
我们定义了指针变量p,还定义了普通变量a=1,普通变量b=2。 然后,该指针变量既可以指向a的地址,也可以指向b的地址。 可以写p=a,也可以写p=b,但不能写p=1,也不能写p=2,也不能写p=a。 这三种表达都是错误的。
因此,在这个位置,定义*p时前面有unsigned char类型,不要看的赋值p=1。 这只能说明p指向的变量是此unsigned char类型,而p本身是指针变量,不能代入普通值或变量。 稍后将指针变量直接称为指针。 请注意这个细节。
前面的人好像很容易看出这个区别。 另外,还有第二个重要的区别。 请一定要记住。
第二个重要区别是定义了指针变量*p和值运算*p之间的差异。
“*”这个符号在我们的c语言中有三种用法。 最初的使用方法很简单。 乘法的操作使用这个符号,但这里不涉及。
第二种用法用于定义指针变量,如unsigned char *p。 这里使用“*”意味着p是指针变量,而不是普通变量。
第三种用法是,取值运算和定义指针变量是完全不同的。 例如:
unsigned char a=1;
无符号字符b=2;
无符号字符* p;
p=a;
b=*p;
这样两个阶段的运算结束后,b的值变为1。 在该代码中,a取得名为a的变量的地址,把该地址发送到p,然后取得指针变量p所指地址的变量值,再用*p运算表示把该值发送到b,最终的结果相当于b=a。 在同一个*p中,放在定义位置的是定义指针变量,放在执行代码的是取值运算。
这两个重要的区别,请大家重复读三四遍。 弄清楚这两个重要的区别,针门就能顺利地一只脚踩进去。 关于详细的使用方法,在我们之后多使用的话会渐渐习惯的。
责任编辑: