c语言中的指针问题
int *a,*b;
*a=3;
b=a;
请问这样的语句对吗?
[解决办法]
不对,要对指针a先申请空间才能赋值。
如:a = malloc(sizeof(int));
[解决办法]
3要赋给a指向的内存,a要先指向某个内存才行
[解决办法]
int *a,*b;
[解决办法]
这是错误的 a没有指向有效地内存地址。
[解决办法]
指针没有指向有效的内存,就好像一条船,没有明确方向,登陆的大陆也是未知的,你怎么能够让船访问指定大陆
[解决办法]
这样做危险,未初始化的指针,不确定的行为,直接崩溃还好点,要是没有崩溃。。。天知道会发生什么事
[解决办法]
这样的表述不对,,你自己试验一下,,不数不出结果的,,,
#include<iostream.h>
void main()
{
int *a;
*a=3;
cout<<*a;
}
这样输不出结果的,
改为
#include<iostream.h>
void main()
{
int *a;
int b=3;
*a=b;
cout<<*a;
}这样就能输出结果了,你写的那个是指针a指向的内存地址不确定,,,
[解决办法]
这是不对的,楼主可以试试这个小程序:
#include<stdio.h>
void main()
{
int a,*b,*c;
a=3;
b=&a;
c=b;
printf("%d%d%d",a,*b,*c);
结果是一样的:3 3 3
通过对照楼主可以发现只能把一个变量的地址赋给指针变量,这样(*指针变量)才与变量相等。像楼主的写的,直接用*a=3是不对的,因为没有事先把一个变量的地址赋给指针变量,所以*a是没有意义的。而这一句b=a,如果两个变量都是指针变量,是可以相互赋值的,所以这一局是正确的。
[解决办法]
a和b都是野指针,这样用有可能报错。