?
#include <stdio.h>
#include <stdlib.h>
/*
* str is a literal. So it is allocated in readonly segment. It is OK to return
* it. But the data pointed by the pointer can't be modified.
*/
char *static_pointer_return()
{
char *str = "world";
return str;
}
/*
* Never to return a pointer pointing to data in stack. GCC issues a warning
* for it.
*/
char *stack_pointer_return()
{
char str[] = "world";
return str;
}
void pointer_param(char * str)
{
printf("param pointer: %s\n", str);
/*
* If str is allocated from heap, free succeeds. If str is pointing to data
* in stack, core dump.
*/
free(str);
}
int main(int argc, const char *argv[])
{
printf("static pointer return: %s\n", static_pointer_return());
printf("stack pointer return: %s\n", stack_pointer_return());
char str[] = "hello";
pointer_param(str);
return 0;
}
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

