存储在内存中的字符指针数组在哪里?
所以,如果我这样做:
char * a = "hello"; “hello”存储在RODATA部分中并指向它.如果我做: char a[10] = "hello"; “hello”以10个字节的数组存储在STACK中,称为a. 当我这样做时会发生什么: char * a[10] = {"hello","hi"} 因此,我们有一个包含10个字符指针的数组,这些指针将存储在STACK中.但是字符串文字怎么样?他们进入RODATA部分吗? 解决方法char *a[10] = {"hello","hi"} 数组的元素是指向字符串文字的指针.作为任何字符串文字,它们也是不可修改的,并且实现可以将它们存储在只读存储器中. *a[0] = 'g'; // undefined behavior,modifying a string literal a[0] = "bla"; // ok,modifying the pointer 现在提出第二个问题:
不,因为它们不是字符串文字.可以修改argv中的指针和指向的字符串.这是由C标准保证的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |