C語言筆記-指標(3) 結構複製,陣列創造與別名
要複製結構體,只需要一個等號就可以完成。
這些斷言都會通過
這個demo可以發現 修改s1.b s1.c並不會影響s的b c值,所以這些數據是創建一份複製。
但是指標的複製仍然是只向原先結構內的數據,所以修改s1.e時s2.e也會跟著改變,解決辦法就是在結構有指標的時候用函數進行複製。
_
指標指向一個陣列:
指標被修改,則原陣列內容也被修改
此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝
#include <assert.h> typedef struct{ int a,b; double c,d; int *e; }test; int main(int argc, char **argv){ test s1={ .b=1, .c=2, .d=3, .e=(int[]){4,5,6} }; test s2=s1; s1.b=15; s1.c=55; s1.e[0]=7; assert(s2.a==0); assert(s2.b==1); assert(s2.c==2); assert(s2.d==3); assert(s2.e[0]==7); }
這些斷言都會通過
這個demo可以發現 修改s1.b s1.c並不會影響s的b c值,所以這些數據是創建一份複製。
但是指標的複製仍然是只向原先結構內的數據,所以修改s1.e時s2.e也會跟著改變,解決辦法就是在結構有指標的時候用函數進行複製。
_
指標指向一個陣列:
#include <assert.h> int main(){ int abc[]={1,2,4}; int *copy=abc; copy[0]=5; assert(abc[0]==5); }
指標被修改,則原陣列內容也被修改
此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝