int *d = &i 与 int *d = 0区别

C语言 码拜 9年前 (2016-04-05) 921次浏览
新手提问

	char *str = "8";
	int i = 0;
	int *d = &i;
	printf("%d\n", *d);
	printf("--1\n");
	int c = sscanf(str, "%d", d);
	printf("--2\n");
	printf("c:%d,i:%d\n", c, *d);

以上代码本人把 int *d = &i 改为 int *d = 0 后 就报错了;
恳请给出详细的说明

解决方案

30

int *d = 0 , 那么d为一个空指针
你去解引一个空指针,当然会出错

10

0=NULL  ;

30

int *d = 0 表示指针指向了地址为0的地方(俗称的空指针)
空指针解引用:

感谢各位回答!
好像
int *d = &i;
*d = 0;
与 int *d = 0;
是不同的啊,是不是?
*d = 0;代表把d指针指向的值赋值为0?
int *d = 0代表声明一个指为空的指针?
不知本人理解能否正确

对的

5

引用:

感谢各位回答!
好像
int *d = &i;
*d = 0;
与 int *d = 0;
是不同的啊,是不是?
*d = 0;代表把d指针指向的值赋值为0?
int *d = 0代表声明一个指为空的指针?
不知本人理解能否正确

正确


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明int *d = &i 与 int *d = 0区别
喜欢 (0)
[1034331897@qq.com]
分享 (0)