
//假设程序不会出错,也是作者的本意
void main() {
int *p = (int*)0x0//p指向0x00地址的内存
p[0] = 0x01//给p指向的地址0x00赋值为0x01
p[1] = 0x02//给p地址的下一个地址0x01赋值为0x02
p[3] = 0x03给p地址的下三个地址 0x03赋值为0x03
}
其实一般呢,直接p指向0x00在linux下是NULL指针,这时候P[0] *** 作是非法的的,无法访问,导致段错误
另外,指针类型直接用[]访问,会有警告的。
一般是通过malloc在堆中分配一片连续地址,然后通过*(p+1)这样的形式给该地址赋值
getenv()返回字符串指针。函数原型是: char * getenv(const char *name)通过环境变量的名字获取值。用整形打印当然是数字了,因为它是指针。你换成%s打印试试。
环境变量里面没有这个名字。
你确定警告是对的这行代码吗?
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)