- 論壇徽章:
- 0
|
本帖最后由 DNFCF 于 2011-03-25 09:37 編輯
簡單的寫了一代碼- #include<stdio.h>
- int main(void)
- {
- char str[10]="sdfd";
- printf("&str=%p\n",&str);
- printf("&str[0]=%p\n",&str[0]);
- printf(" str=%p\n",str);
- return 0;[code]void bzero(void *dst,size_t n)
復(fù)制代碼 }[/code]結(jié)果告訴我們,輸出結(jié)果是一樣的,我的疑問是:用bzero作為用例,其原型是:
如:這樣寫卻會報錯說參數(shù)類型不兼容:但是:- bzero(&str[0],sizeof(str));
復(fù)制代碼 卻是對的。
他們的值不是相同的嗎?為什么會報錯呢??求指點
每次當(dāng)用到字符串指針時候,總是糾結(jié)著是寫&str,還是str。。。。求高人為我解惑。- #include<stdio.h>
- void print(void*p) ///對比=============>>bzero(void *dst,size_t n)
- {
- printf("In print:%s\n",(char *)p);
- }
- int main(void)
- {
- char p[10]="aaaa";
- print((void *)p);//OK!=============>>bzero(p,10);//NOT OK!
- print((void *)&p);//Not OK!=========>>bzero(&p,10);//OK!
- print((void *)&p[0]);//OK!==========>>bzero(&p[0],10);//OK!
- }
復(fù)制代碼 |
|