C语言 指针指向

来源:百度知道 编辑:UC知道 时间:2024/06/04 10:06:02
书上的程序:
#include "stdio.h"
void main()
{char *str="asdf";
printf("%s\n",str);}
*str没有指向变量啊,怎么分配地址的?为什么不报错?
(附上课件,我觉得这两个是矛盾的)

int *p; (未规定指向哪个变量)
*p = 100;
这种错误称为访问悬挂指针(suspended pointer
不是文本段的啊,什么都没有,只有那几行。是不是字符指针和其他指针不一样啊。。。。

呵呵,你理解错拉,概念不理解。

char *str="asdf";
这条语句是定义一个指针变量str,同时初始化其值,即指向字符串常量的首地址,字符串常量是在文本段的。

int *p;定义指针变量p,但是没有初始化
*p = 100;因为p没有指向任何位置,其值是未知的(随机的),所以这么访问就错误了。

int main(void)
{
int a=0;
int* p=&a; //把p指向 a
printf("before a=%d,*p=%d\n",a,*p);
*p=100;
printf("after a=%d,*p=%d\n",a,*p);
return 0;
}

楼上的说法有误,楼主可千万不要相信啊!*p = 100之所以是错误的,那是因为指针P没有初始化,也就是说它指向了一个未知的内存区域,如果盲目的给该内存赋值,那么就会覆盖原来该内存中的内容.如果该内存存有系统数据,那么危害是无法想象的.其他的一楼说的还是比较正确的.楼主你好好理解把,我觉得你对指针根本就不理解,建议你先去csdn上边找点文章看看把,那上边讲得非常清楚,也很容易理解,祝你好运!

KOKO