char* ,char[],指针与数组

“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);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值