C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解
2020-03-11 17:51
477 查看
初学者在学习C语言的时候,最头疼的可能就是指针,话不多说。让我们直接进入正题
直接上代码
int main(void) { int *p = 0; printf("%d", *p); system("pause"); return 0; }
直接运行,好了,程序是不是报错了?那就对了。因为此时的int *p=0实际等于int *p; p=0;
让我们来验证一下对不对
int main(void) { int *p = 0; printf("%d", p); system("pause"); return 0; }
这说明此时指针*p装的不是0,而是以0作为地址的一个值,输出地址为0的值编译器当然会直接报错。
那为什么会这样呢?因为此时的int *p其实是(int*)p;把它看成是一个新的类型,就和int a=0;差不多,这也就解释了为什么会输出0的原因。而我们知道定义一个指针*p,p里面装的是地址,*p则表示这个地址上所储存的值,
*那么我们如何获取这个地址呢*
这时候就可以用”&“
比如
int *p ; int a = 2; p = &a; printf("%d\n", *p);
此时的p通过取地址符号取得了a的地址,那么*p储存的就是a的值,你也可以把它看成是另一个a,改变它的值也可以改变a的值
比如这样
int *p ; int a = 2; p = &a; *p = 1; printf("%d\n", *p);
此时的就会输出 1
总结
以上所述是小编给大家介绍的C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解,希望对大家有所帮助,也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:
相关文章推荐
- 小白 C语言之 指针 int *p=0;和int *p;*p=0;和”&“有什么关系和区别
- C语言指针,int a=1; int *p; 其中p=&a和*p=&a有什么区别?p的值是否相同?
- C语言多继承时子类与基类指针关系,union与struct区别,volatile修饰符作用
- C语言中二维数组名与数组地址、首行地址、首行首元素地址关系与区别详解(初学者必须掌握)
- 【C语言】指针函数和函数指针的区别及函数指针详解
- C语言拾遗:常量指针与指针常量(const int *ptr, int const *ptr, int * const ptr, const int * const ptr区别)
- C语言指针 int *p[10] int (*p)[10] int *p(int) int (*p)(int) 区别与举例
- C语言常量指针vs指针常量深入const int *p与int * const p的区别详解
- 数组指针和指针数组的区别,C语言数组指针和指针数组区别详解
- 深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)
- 指针问题:C语言中 int*p[4] 和 int(*p)[4]的区别 等等
- C语言 详解多级指针与指针类型的关系
- C语言——常量指针、指针常量以及指向常量的指针常量三者区别详解
- 初学 c语言 关于指针------什么是指针 int *a 与 *a的区别
- C语言 指针与数组的详解及区别
- 深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)
- C语言 二级指针详解及示例代码
- 字符数组和字符串的区别,C语言字符数组和字符串区别详解
- C语言 指针与二维数组详解
- c++引用和指针区别详解