我以爲我對它們有了一個基本的瞭解,但顯然我沒有任何東西。試圖更好地理解指針
#include <stdio.h>
void f(int *x, char *name)
{
*x = 4;
*name = "stan";
}
int main()
{
int y = 10;
char name = "bob";
f(&y, &name);
printf("%d and %s\n", y, name);
}
最初它只是使用int測試,但後來我加了第二個參數f函數與字符測試,現在我無法得到的代碼進行編譯。我想了解,但我似乎無法。
在您使用指針之前,這些代碼是否工作過? 'char name =「bob」;'? – Hogan 2015-04-02 21:59:34
你對'int'的理解是正確的。你對C字符串的理解是非常非常錯誤的。一般來說,我推薦閱讀一些關於[c]中的字符串的教程(http://www.tutorialspoint.com/cprogramming/c_strings.htm)。 'char'只是一個8位有符號整數。 C中的一個字符串是一個'chars'數組,通常表示爲'char []'或'char *',後者是一個指向'char'數組頭部的指針。 – aruisdante 2015-04-02 21:59:51
c中的字符串是指向char的指針(因此char * mystring;或char mystring [])。 Hogan:char是一個8位整數,所以存在從char *到char的隱式轉換,指針被截斷。一些編譯器需要標誌來警告你這個 – Lectem 2015-04-02 22:01:05