我正在學習指針。這段代碼正在產生運行時錯誤。 我想插入字符串在字符數組中使用指針字符。爲什麼Strcpy函數不能使用指向數組的指針?
#include<stdio.h>
#include<string.h>
int main()
{
char *a[10];
strcpy(*a,"foo");
}
我正在學習指針。這段代碼正在產生運行時錯誤。 我想插入字符串在字符數組中使用指針字符。爲什麼Strcpy函數不能使用指向數組的指針?
#include<stdio.h>
#include<string.h>
int main()
{
char *a[10];
strcpy(*a,"foo");
}
的char *一個[10]是指針數組爲char,你想要所以char a [10],這是
您已經聲明a
爲10個指針數組char
字符數組。 我想你的意思是聲明一個10個字符的數組。
char a[10];
更改聲明也意味着你需要調用更改爲strcpy
:
strcpy(a,"foo");
程序現在看起來是這樣的:
#include<stdio.h>
#include<string.h>
int main()
{
char a[10];
strcpy(a,"foo");
}
爲什麼strcpy函數不使用指針指向數組?
此聲明
char *a[10];
指針不聲明爲數組。它是一個由char類型的對象組成的10個指針數組的聲明。
此外,此數組未被初始化,其元素具有不確定的值。
要聲明的指針類型的數組char[10]
你應該寫
char (*a)[10];
,指針必須通過適當的陣列的地址,如果你要在功能strcpy
使用它進行初始化。
看來你的意思是以下內容。
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[10];
char (*a)[10] = &s;
strcpy(*a, "foo");
puts(s);
return 0;
}
程序輸出是
foo
在這個程序中確實是有聲明的指針類型char[10]
char (*a)[10] = &s;
和指針的字符數組被地址初始化數組s
。
而取消引用指針在功能strcpy
strcpy(*a, "foo");
哪裏是你的指針'了'分配內存的代碼中使用? –
編譯代碼時不會編譯尖叫嗎?你應該聽它。 – Gerhardh