一件事,一直困惑我,字符指針。 詰這四年我又纏綿成C之後。指針的初始值是什麼?
舉個例子所提到的情況。爲什麼呢char
指針的行爲以這種方式?我們如何直接處理指針所指向的內容,或者它是否像char指針存儲地址以外的東西!
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* charPtr="I cant understand why";
int* intPtr=60;
printf("%d\n", intPtr); //displays 60
printf("%p\n", intPtr); // displays the hex value of 60
printf("%s\n", charPtr); // displays the wh0le string
printf("%p\n", charPtr); // displays the start address of the string
return 0;
}
接下來int
指針,它怎麼能接受值60和它從哪裏獲得存儲在哪裏?
撇開字符指針和malloc的,我以爲指針的基本想法是得到一個地址指向!
爲什麼這些案件
*intptr = 60 ; // should be setting the pointee's value to 60
intptr = 60 ; // sets the address
擲編譯錯誤而
int* intPtr=60;
偷偷在沒有得到一個地址(或者是作爲地址60,如果是這樣,爲什麼這不能接受不前者的情況下)的指出!
我想我在這裏的東西,但嘿!你猜怎麼了 ?他們告訴我在SO搜索!
編輯:給指向的地址的字符指針爲int的指針也會引發中沒有錯誤!
int8_t* intPtr= (int8_t*)0x80485c8 ; // works without casting too ! I guess addresses are acceptable.
解引用它會給等同於字符串的第一個I
值。是一個很好的做法或有任何其他的解釋存在於這個離開了thier字節位大小分配,如int可以支持一個char所以.. ?
正如hmjd指出'初始化語法'是問題!編寫我自己的代碼沒有問題,但修改某人的代碼時出現問題!
真的很難弄清楚你究竟在問什麼。指針是一個變量,其值通常是另一個變量的地址。 –
*我想我錯過了這裏的東西*實際上,好的C編程書籍/教程。你問了很多常見問題。 –
@DavidSchwartz是的!這也是我的基本想法:)但是這裏發生了什麼? – Borrito