2017-05-18 23 views
-2
#include <stdio.h> 

void add_element(char object[20], int price); 

struct linked_list { 
    char object[20]; 
    int price; 
    struct shopping_list *next; 
}; 

struct linked_list list = {"car", 15000, NULL}; 
struct linked_list *last = &list; 

int main() { 
    add_element("snake", 340); 
    printf("%s", list.object); 
    return 0; 
} 

void add_element(char object[20], int price) { 
    struct linked_list new_element = {object, price, NULL}; 


} 

ERRORから整数になります。Cの初期化は、ポインタ

+0

あなたは関数呼び出しに間違った約束をしているのを知っていますよね? –

+1

これを 'struct linked_list new_element = {" "、price、NULL}に変更します。 strcpy(new_element.object、object); ' – BLUEPIXY

答えて

4

ポインタを使用して配列を初期化しようとしています。これは、ポインタをcharに変換し、最初の要素を初期化するため、エラーとなります。

この断片は、次のようになります。これは誤りであるべき、唯一の理由は、非標準の拡張機能の警告を生成するようだ

struct linked_list new_element = { .price = price }; 
memcpy(new_element.object, object, sizeof new_element.object); 

1 - 。 GCCとClangの両方は、これらを捕らえるためにかなり頑強なフラグとして-Wall -Wextra -Wfatal-errors -pedantic-errorsを受け入れます。

関連する問題