看看,看看
学习
感谢分享!努力学习!
这个地方一直搞不懂
{:5_105:}
额,看不懂,只能打个酱油- -
感谢楼主分享!
谢谢分享
支持小鱼,顶。
点赞
点赞
adaafsdf
嗯
3.6存取效率的比较
char s1[] = /"a/";
char *s2 = /"b/";
a是在运行时刻赋值的;而b是在编译时就确定的;但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。 比如:
int main(){
char a = 1;
char c[] = /"1234567890/";
char *p =/"1234567890/";
a = c;
a = p;
return 0;
}
对应的汇编代码
10: a = c;
00401067 8A 4D F1 mov cl,byte ptr
0040106A 88 4D FC mov byte ptr ,cl
11: a = p;
0040106D 8B 55 EC mov edx,dword ptr
00401070 8A 42 01 mov al,byte ptr
00401073 88 45 FC mov byte ptr ,al
第一种在读取时直接就把字符串中的元素读到寄存器cl中,而第二种则要先把指针值读到edx中,再根据edx读取字符,显然慢了。
这个地方有些不懂 a是在运行时刻赋值的;而b是在编译时就确定的;但是
0
谢谢楼主分享
多谢楼主
{:5_92:}
学习一下
写的非常好
学习知识{:10_282:}