堆栈中数组与指针的区别

[复制链接]
查看11 | 回复3 | 2009-7-25 11:33:15 | 显示全部楼层 |阅读模式
char *p="123456"; char s[] = "abc"; 内容 "123456" ,"abc" 本身是在常量区运行到函数时 指针变量 p 和 数组变量 s 是分配在栈上p 指向常量区的内容 "123456"s 中的内容 "abc" 是从常量区复制过来的函数结束以后,变量 p, s 就都不存在了p 指向的地址仍是有效的,s 所在地址的内容就不确定了这个看一下生成的汇编代码就清楚了 #include "stdio.h"#include "conio.h"int main(void){ a();}int a(){ char *p="123456";...
回复

使用道具 举报

千问 | 2009-7-25 11:33:15 | 显示全部楼层
(1)分配内存
假设有字符型指针变量与字符数组如下:
char *p ,s[10];
编译器为字符数组s分配10个字节内存,用于存放10个字符。而编译器只为指针变量p分配4个字节内存。 (2)初始化赋值含义
字符数组与字符指针的初始化赋值形式相同,但其含义不同。例如:
char s[ ]...
回复

使用道具 举报

千问 | 2009-7-25 11:33:15 | 显示全部楼层
char *p="123456"; 在C++中是不标准写法应为char const *p="123456";...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行