“china”你把china看作字符串,但是编译器把它看作是地址0x3000,即字符串的本质表现是它的第一个字符的地址。C语言中操作字符串是通过它在存储单元的首地址进行的,这是字符串的终极本质,数组名是一个不可修改的左值,不能赋值。
void test1()
{
char string[10];
char* str1= “0123456789”; //11个字符,数组越界
strcpy(strin,str1);
}
void test2()
{
char string[10],str1[10];
for(int i=0;i<10;i++)
{
str1[i] = ‘a’;//’\0’?
}
strcpy(string,str1);
}
void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string,str)
}
}
2,回答下面的问题。
(1)void GetMemory(char** p,int num)
{
p = (char) malloc(num);
}
void test(void)
{
char *str =NULL;
GetMemory(&str,100);
strcpy(str,”hello”);
printf(str);
}
(2)
void test(void)
{
char* str=(char*) malloc(100);
strcpy(str,”hello”);
free(str);
if(str !=NULL) //野指针,这个容错无作用
{
strcpy(str,”world”);
printf(str);
}
}
(3)
char * Getmemory(void)
{
char p[] = “raoyaoiau”;
return p;//返回指向局部变量的指针
}
void test(void)
{
char* str = NULL;
str = GetMemory();
printf(str);
}
char* ,char[],指针与数组
最新推荐文章于 2024-01-22 13:00:01 发布